{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入数据分析常用的工具包\n",
    "\n",
    "import os\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = '1'\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "#导入keras和opencv工具包\n",
    "\n",
    "import keras\n",
    "from keras.preprocessing.image import load_img,img_to_array,array_to_img,ImageDataGenerator\n",
    "import cv2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.读入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#图片的根目录\n",
    "root = 'D:\\image_dataset\\dataset-resized'\n",
    "#列出根目录下所有的文件夹\n",
    "dirt_list = os.listdir(root)\n",
    "X = []#存储读取的图片\n",
    "Y = []#存储读取的标签\n",
    "class_num = 0 #记录类别编号\n",
    "\n",
    "for dirt in dirt_list:\n",
    "    img_list = os.listdir(os.path.join(root,dirt))#列出当前文件夹下所有的图片，同属于一个类\n",
    "    for img_name in img_list:\n",
    "        \n",
    "        img = cv2.imread(os.path.join(root,dirt,img_name))#使用opencv读取图片\n",
    "        img = cv2.resize(img,(224,224),interpolation = cv2.INTER_CUBIC)#将读取到图片转化为224*224的大小\n",
    "        img = np.array(img)#将图片数据转化为ndarray格式\n",
    "        img = img.astype(np.float32)#将数据类型转化为float格式\n",
    "        X.append(img)#将读取到图片添加到X列表当中来\n",
    "        Y.append(class_num)#将标签添加到Y列表当中\n",
    "        \n",
    "    class_num += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "403\n",
      "501\n",
      "410\n",
      "594\n",
      "482\n",
      "137\n"
     ]
    }
   ],
   "source": [
    "#查看每个类别的数量\n",
    "for i in range(6):\n",
    "    print(Y.count(i))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.utils import to_categorical\n",
    "\n",
    "X = np.array(X)#将list格式转化为ndarray格式\n",
    "X = np.multiply(X,1.0/255)#对X进行归一化处理\n",
    "Y = to_categorical(Y)#将标签Y转化为one_hot编码格式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x1d87b64ef28>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQEAAAD8CAYAAAB3lxGOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9e6wlyXnY96vqxznnnvuYOzP7nF2KpEhatGSKigkLgWHYsixBSZxIDmDBAuIYjhA6gAUngP+Q7ARJEMCAkNgSEAQwIiOGHcOWIyFWRBiK9bAtO5JI7lIkTZGSuNQuV7vLHc7rztzHefSjqvJHdfWp7tPdp8/jzt4V51vcndPd9a76vvpe9ZUwxvAEnsAT+MYF+U434Ak8gSfwzsITIvAEnsA3ODwhAk/gCXyDwxMi8ASewDc4PCECT+AJfIPDEyLwBJ7ANzhcGhEQQnyfEOLLQojfE0L82GXV8wSewBPYDsRl+AkIIQLgFeB7gLeAl4EfMsb89s4rewJP4AlsBZfFCfwx4PeMMa8ZY1LgnwLff0l1PYEn8AS2gPCSyr0FvOk9vwV8Z1viw2vXzdPPvwgY8BgT4/2/CQTC/cD/ISrv/MKE/SH8d37WeiaXziCEqL1aZK5/2wk0tbETjGsMGO+3X4awY2aWB9nrf+XF6voaQHhtb0ollupaUZOptmUXo23a6ja1NGYx16Y5UVv2Xq3ozty4iNcttSzlq6986b4x5ql6+ssiAk3zVGmbEOLjwMcBnnr2Fn/nH/0Cxhi01l4GgyFfLlwIMAJBgBDCPhcLXAiBkAYh8RBfIoygTgTs3JqyzDoyCyHKNoVSlt/r7XR5m8roHKSyvOrwNBEctxD9NvjfwSCkRspgKS2mGIOifX5e5af1CEh3XwwI3YqNi3qbUc1+X4MIKJe+Vv4KcGyuKdpSlmdM2e/lyoxtdzHHeZ6jlLLPVOeCHs+d/aqlq8+zqDHqi++mnRIaUa5Nfw6FEPxn3/WHfr8py2WJA28BL3rPLwBv+wmMMT9ljPmYMeZjh8c3WgdvgVz197Xnjv2h7cs2G7i/EN2C0VqX/VhnMdTbsUkZu4Cd8zM7KnBTIrvjZrwroJXD6YDLIgIvAx8UQrxPCBEDfwH4RHvyhoYXxG4x8SuoQAe0DcsmCObaBFVCsOkCfdzQ1eddE5zu4taoa0si8K49JLdJszcQUy9FHDDG5EKIHwF+EQiAv2+M+VJ7hiorVE6aoXUlWdnW240xFW7AliFKYlKyhKK9zLqcv8RWs5gX990nCH0G3S+zaXE21dn0vV530aqV+ZfysppINokgfXGx3sddEco+/Wyqv+3bLojLOsRmaa03pWlTqnS2wf67Tn8uSyeAMeYXgF/olRYqMnaRHypovswWdokARSFF+Qbh9AOOECy3t1KPD00DWpevd8EJOELYRiD8NPV2WKxsWTHFpzZxq60e990nGsXXygLtUpp2ld0FXWX2GSere1wmXqva5HN6fcpcJbI1EcEuAuDriYw2rcR2Xe6mK/2V9RgUdCN5qQRcSRCuPosOTYq+9jR9CM6ijO7dxP/UtKBbF+wa7d0EKnmXql5BZNxfC4LWdS6thKROiDrK7At9OICy/lp7F+3YrXhzaZzAutDMNr47EHhbcJPalxNo0km0pXU1tKZs0eD7ddU5AbNIYP/tr+hfQ1laFfU2IQR9OAFjnFGkh2jQg/A1Z1s9l7aLdcLXwQ351iRrGmuooB/BuCJEwNHuKgghvAXHYrGV8qwoOXyWBtCm6LKmNME2pGcddruacf266oRiiRNaKSl1sNE2QfXdWrtfR9pWBKunEYsqnX6nKVsH8nZyKJ646QhBUUrrbm0wFcK6+NdrX30zY3k0hFd2u15o2SLmt2NRqsCIWhmO+LXgVR2uCBEAgSp/WRG3kHOFKCiaWFBHLUFIqzUuB2sxKMI4HYB75YsLXWhuKYZb9HXtf2O71/QLaFKyNX0vWrPU0k7bfUW6axeQ6nXLZRvl4r1v8/fkZoxcLNKKM4+B+qKsVtbYhoUvQ1GDrmcsS185jitBgBDaNrPe1qIddUW1MQaDBllwJS5fQVCkCUrJqzYai/GtESxjTKWbVcJuEHLBJSyPgnupq59lgE8C+qzOK0MESmhqtfCV+s6JYgk9OgppXuTl1yZW9xJg3QW7HkdS72O9Lxv2rFOGXa+FxiuvHUTZ1NadvK38pZ27s5aFwrQjXbXMhfizWI+roaSV/ZK31N1SaFfBHaKeD1ePCNTAN38Jbxfv3KXX1NZWntvydXzrC7s1l62QiTvGoG+92yjA+pS5yoy5rQa8ygy2iBNr1XDJ0KH3aNdTrCiyxxhePetATRZdaP77seY2/RbVt7zfNQF4J+EqtaUNdmkC26S8qwbrckXrwJXnBCqwwjegalYq5Fer+l2ocVaY2Spc1k537mXYlWmtbzl1V2f3ro9Cs8ve3VBz8+uSB18uc9nRazPYhmNzCrl2TlJgjK6l9ypuLG+N+neB0mb9cq4UEehCMvfJ+Q902sobTDm7UOwVDbg0HnIbZZdvbtrEfLXuOCw7EJVfOvLQjqE1Ar+pyFLRDPUoo07MrOXATnIjO25aCGLhsbqVwrKlTavS+lBXB/YZgytFBGDR6E0WZaWcHZe/qGjN5DuwJ68L6yyiWk66BaKazL0hAWkCY3yNd/+xWMdbz/uytFsudBCi8BvAtxteCSitFcIsWRq2gStLBNzvinKnJU/d5rrCNtBY12VAX7+BqyKvlot/xbeN/SFWwNKOvGaeSjs6NePNRMDlcwvmqpCAJn8FRzCb3brXgytHBByUfgI98WMdRNqFn//2UG9v/Xk9Vrs9z+OANYhYWzc9WeFyiKJp+FVLYdwhNItkVWcb004hV5a8Y/A4/tLRaYuqrwwREAR2AowoFUjCOE6gphCsLJzlpS9FnZOrqxNdvqr8tHKK12R/m9jyBbeyCMqxmMSCo+k02rR40XQYjlchVR85tvJFLLfDd0x2AVyW3H3ri1WIIq0pnMEW8+n3Rne0qzJSor5GvDaW47toRHN/Dcbo4psuFIG66Iv9q460Iw5ief2UDkWLVi47STX3TeCvlfo3Wc3nnLWWLOX9KMOVIAJWoSIrB4FKs6BZmAnrLFzZ5yWWsMELbgkcQns70HbdaIQFwTC1Ztb8+b2Hzrlrl4m206rXWMp2d9ZFO6pDbMp/FkSsviqrjxUvzppp2C+8N39Tb7Oottc1QjQktVU6YqhLLsCg7V8DASiKK8pa6lxZT+fZgdaudJz3WCKTXlta87TDlfMTqIWTW7DuXStBeNYC0TJA7ZnXb+PGSrd3Hrp0Ev2VbLshl122792IBNuXsQtt/yoPyHcaNiYCQogXhRD/WgjxO0KILwkh/uvi/f8ohPiaEOLzxd9/uFbBWw7UuiRgUyj9yVf8PS5wiLNuvXUC0NWPxXP/dqyyWfepb5P8rp3bzsNOFJ483rWwLmwjDuTAXzfGfFYIcQD8phDil4tvP2mM+dtbt04sS/Pep+V35ekpXdkEVrmn1gpZt5WdsK3jz3J+j20W/ok3VhLQTra0Qcvc1xmos48VJVY/TmMdE2ejLb8lXVf/28po4pL6tK2ab3uG29dH9dJNrbHsNiYCxpjbwO3i97kQ4newocY3gj4a+4qNfw334G1NKLuC7dtgGp+svNqzhGIsLm08drDhbTNfvg4Gj5XvEj262tGHk2gjWm5e2kSKfgR3QzGiYwOtw050AkKI9wLfAXy6ePUjQogvCCH+vhDieIPy1joDsMRKXlHOq6uNj5NEdS3u/iJFCwve9n5H4lJX/l2LAjuHHRHe3uPXs+tbEwEhxD7wfwP/jTHmDPi7wDcDH8VyCn+nJd/HhRCfEUJ85uzRSYsnX/9Bqy7EqwmdyHdF2tIXSddB8s0IQP+6+7TrSsCGutVyU2xwce7sW0/02YoICCEiLAH4x8aYf1Y07I4xRhlrYP172CvJlsD49w5cu+7Kq/ytNvP9wYGqt0Jbvy93PNZCFofg9ZW9UqfxBxUMzZhdM302PqxZ044J28Y6AWG37P8D+B1jzE94758r9AUAfw744urCwEgNosHhwoStZq22YWj0tXODJnTL+Bu2dZtYZ2KMkZ5M7+qnaEPeZgauIpkvO9e8K/vIsf3a2aQ0E0CwAftiAIUzotdiSePvSdUx6QBRlNdQU50g9elzXenmLpRpKqf6PoLSyciZtBeEoYljsT8anKpsJRixQHjnO6GLde9pPlr72Xc9brPq/zjwF4HfEkJ8vnj3N4EfEkJ8tGjf68Bf6VXakm3P4DsN9FUalnlX1dWnSZfIidiJFJWnphRV97Tmflk2sX/d2/RrwZI6p64qGO//y5nrL1w5XdxPcxuqLxry9x2QNoVhx1i775V2mBpRK/G/2q6K05uh+m+9WbXimlb4LlboNtaBX2tpQ6+7BlZD+359Oah51USPNXfqNXdlfzGvx8E072y98tRWfUXGNVV2uq/mfOEFvLo9fdrctOu3jVU17WYa/K5s2yhP14Er4Ta8Dlw1VH2noGmi17WmtEEbp9COAM35l1jgmtxc2U0bELkfW7t+O7rS+m3rQvqNZfIViO+1oFLXJuJbWeWKvO86IvAEtoNNFkmfMt4xuDzWsFrNO9Dnx2XZuFJEoK6UafpWgS1l9mWlV7O3WBPswqd8E/bUr3+ZNV+vvFVOQ9suwGUnGrH0ve2bX3+bYm4VrDO+XePsribvLK8uxK+A+npbMv1hqjqBlvq7cKb4sLItV4oINMHj9PSzVfVzWb0Ku+E67rXrwq6I25LcLJrTQV0H2q9+X7O+a+KwyU7cxzvQF4FMz3zNVpoe0GFFc3BliMA74tYrRH8t8h8Q6CIcTci7zbws1+N0Ak02hf47aVVGXujJ15Gdu8r2/303wLZ9vjJEoAKm9YGqW00LC0cxiQ2DY7+1lb26UY1ro2sONlEat5RXX+TLirdK4l51barsatuZKuW1tqPt3SYWh0X+tsM/bXl3CW197Z6zHsjbuJNXy7BrvSlrv35eHSKg25wXix0JqB4aau+giyfT7DQkK0hW3mdYFNmMgGZRasP38iIo4dv+AdPj+vSW2pb2yi6ELypv2ncdNI1ufYG26WL6Ite6aWo5oLyKrg5NN06tV/8mbP1aeWo6gV6iRIcewWkMGsmlaIsuBW1jled5a44rQgSWlXL+l+rvLWTVsgyfCvRc4GK5PbbMOnJ6O+QO1NZ9FmOTs9Cu9ro+YsFudtYVsusqX4GGtmzaLjfmTaLBpkrKlfXZwv23VDZAD0zTy8rHaju11ijVRmCvDBHoB9tOwKrUGytf2spYU2O8Zk27KWUNsaGP/0BnuaJj7a7yBWj77JXZtftvO59NisJdKiJ3BY6Y+O3N8/wPDhF4t8FlkoDHAZsiUX0HXWjDm2XXHgWyrThQ+daztDriXyoy76hsow1aG1ywVKUUaZqidbsIcbWJQKEUuQzLgVsIbexuZcI7drDG9B3v+/gXCGE610TzjtchNqwwE22yo62SuZstDZshktvdmttZHSv/SLpD4EaRqsMk17QmVs/v6rTbQlluyzgKIdBal3+OC8iyrLNNV5sIeLAJIejayZpKk7J6L71X0FKG6uGRduTbZOsz2ta3SmlXrap74W1i8mtCgk7rRI82rDONJcHUHePY8KlOaNfpuyMaPiJ1Oep0ldmmzynbV/5vkXbxzTSWYYyxu3pDtUrlKGXTZ1lWIv8qJeW7hghsBZfBSWxI7d9N9ucl2ME49jEtum9Nu+w65VfK65muK89ygu31Rsv7jSd+tJnAxXL4fUcctIY8V2RZhlKqF+H7hiACuyQBy2zlhvnYgZjzmJ2dmpnx/uNrvfuqO1wbt7GuPX3d3b4Oj8NZrZmbaE5jjGm3lxSD7uR8RwCUytFKopQqFYF9TJXfEERgFdu2Xdl46unGFJdSbzP0r8vfY/vut6UexXvXJ0/jOyeru3eNOoRNRcDt5ro3t7ZlVcvVVAlA2zhrDKYQV5TSgFUA5lmG0ZI8V2itG7wqm+GKEAFTHZGOA0TbmHr6HJhpVwCVjVvGAuP+aiya/2sp22ZORGUTCoFSuDaUCZb3D78mU1cSFtyEAMyKsS0JgFeGKcoQJQtbb7SpEhzh2lhcAteSzycQTX1YbpQo++/6VRIEUy9/2Q2ncaOoPy/djONNuV93rZ2rzJ9+1gX6m3LshOtPkcwogzYGpTRKK7Q2aKXIc02e52htuQApg16rbCsiIIR4HTjHunrlxpiPCSGuA/8X8F5sZKEfNMY8XFlW7d+igm2atxZ0T5RYXgDui0N+txD9MoXGyJZy9YbErMB6h1qVZ+dJVuuL7mi/T1zX5gS8+dHUUWCRp0LAPQJW0fjX8c0rXnTi0LIvpNXjCox2UavrIbwMQi4S14tvN6eJakM72lUnAL6lopKOlqCoDund2OHL/dYMmOeaNM1KZyCjDVpki36YLs/CBeyCE/guY8x97/nHgH9pjPlxIcSPFc8/2ru0d+Ig0RqwPbO5K1jezVq/GcPiotftaoR+prNe5e14IF27nGa/QmB6NNPl2faYeB2pfXNlk6a/0fRaIwILud+y+nmekyRJaQFw5QQhlXmWcnUs4csQB74f+FPF738I/CrrEIFLhm2VQleDAKwPlSO3sBEGNu1kl3mceV1Ytev2zbuLWBFQDVJa0fp75TquwxEgnwhoj3A4ApBlWUkE3G+/PFXjYrqchBxsSwQM8EvCXu37vxtjfgp4xhTRho0xt4UQTzdlFEJ8HPg4wFPPLi4u6hr4pgXXFYBklxFzduFGXCmvK1PDx4XZqL38Nrt9/X5bJ9eX1W1wZr0PolS+WQVA7XvZmoY6F05ArfqAjjrb2mesrLAkMrlvrSciPba86Xubb0IfX4N6WuenoIpnx9k427/jBtrK63pugm2JwB83xrxdIPovCyF+t2/GgmD8FMAH/vBHepHcTZB7V1aBTXaHLRjlxo26Nr2Vddyu0LQcgCiE4K6Fs45zkpRyefeiwemlJETGKQhaEcLP49cvCUrZuc9BpibvzyXnLtGer75r95nzOstf99zrs3brrL/7cya/LMsKxV/H7r6BvLoVETDGvF38e1cI8XPYi0buiOLuASHEc8DdberoA4+DJd15+Q0KKQe+23D9RNtl60zqbrd90jpPS7c4nVy9zPYajFYVZKmX1dgWKREsW3bWmfeuXX4TaOLIfNncR+L13I+pIL87/ON+92Hv14VtLh8ZA9LYy0jHwPcC/xPwCeAvAT9e/Pvzu2joOw3rsMq9ylu2W/mVVeqtuJnuGPwdqv5Xhzqn4O+c9VNqPiKUzivCIKTVbjdBfScuiUmeIhAEQYCUslV518f8W5oet53PWheadv8mhG0TZ33CqJQiV4osz0si4Je7a5+XbTiBZ4CfKxoUAv/EGPMvhBAvAz8jhPhh4A3gz2/fzHczNPNnNY50+VuNXV0snq4FsD4vuFhUDvlt0BUhPMcGp2Rv2Imt/GoAa6LyTV4O+R1CCGEwaIxZ3pnbd/UCmYzdIQMpkQUx6KP5dn30/10yR26AWEsGB0NhutPFKb6GvjS8Egh0ceLPaIPSqlD65WQqr4zhZcE2l4+8Bnx7w/sHwHevV1iHAm1LqreOLNb2XM/fW/liBBU7trBLp4sAFAlrC2ax5LTy3/nluDTCNYrCWk4zEXK6AmszF9LYP7E45CPkwm/N2fiLHlgdQyG2GGHQRpHrDIxB6wV3sCxvt+klKB2oLBEUxbpY2PmNMaC1jfGk7XVyYUEQHCI7wtClp8AsH2Ryj4bqrlxvZCOZMgZjFNootMnRfj5hsE4JxViWk29HUqHRaJTRGKPJdU6aZ2R5jlK6sR0rRQr3ufQN6V5tV8Rj0MIqhBXl4NXyLaV7fIa8bgpddS4R5b1zK6i6EUuyv6CIHlSnIKJODFyb/EvOWhYNFhmEBIS9C1KUzk22HuNkWmFK5SJYpLdtKuRgFEpbRxWjZUV7vRBnOhRkRlAGQTNmQQig9EoE65QkjHWbtYTMEATBki6jXk9dfKivkHKs1lQIurRKO0895za1pDXAjal71kajCk4nL3b9PM/J8sya+rS0hHel7sPjSxzNN6JGBNpx4koRgUuDdYmCEKsRdaN2sKVgv5KFWLsJxrMy1Be+vyNaWXzRDKfw8uV+sCwxLTJ/Y4+KXXmdbvltzPMcUxCCMNx8OVeQn9UbSalfqBENR7z85dPM+VivP8f+p2lakf2tyqhDb9QHeq63dxkRaOEQ6O7runizNa5eYVjql6ku6Loyy0d2oIL4QKmxXiCBxpj1RrBFVF+Rx5ScgAuiWd/1+5bTBn0IgftX14hna3sLKDX+WpX2/6pzUf99aNs9611GBJph10qTy1LCXLYZczNY6AyW5ff6LlclFk7u9/0FtHFHg1rA51wrbPtmrZeFZ13pP18TD9YF42ll26wkzRmbnXfKMr3fpd0/z8m1aiCkBqNBEPRvc+OHfk2/UkRg9YBXlVybeLotlbiG3NeWp1WHgaejWZMA9K1jF4Rlob2vKtb8P/c9iqLKu/pvGmTpihXAU/JVdseG7jXJ9UtKMi9tnudEUdRaTuW5rK8f19KmS/DFgLa6/DHy3X/zghOoj3XZ5zbcXjHnjojY9voqz2a4MkSgjxb/KkAbq+egb/u3IVy7BNuMxdi7dvk7q1vAQRBUAllU2OEVTizl/Mpmwi1oRvJVDkJ1+V0pteRLsLRZdCn9WsygXf2qewXW++ee3Y7v6wCMFM1K1K1puyn/v6w6rsKVIQIOHMvZDLtFlstgz/329y39qhBA13b/pJrfH98DbokDKPI3dbr87p1iWOprh8/AOp5+jnj5IkEXcvaFurLPB5+QNilWnR6l7vijjfUNeKfFxCtDBHohQlUa2KqeXcHK8tr6Y6qGu66Ff5lQN1m6ReqOqNZZcccR1FnYJkRfGhtR3ZWXPBBZ/rYOAXDtcNxAk47Dvqu5LNtES+UteVCa6reF/L5wgGpqkzvx5w7/uHxSCBS7O7W4KVwZIgBNC99QWIbLJz9d05A1D2MfhDL0ue5qtc22Ck2nvazdvarS9RVS/fzgqmDKsWoAr0vluQRRIL9eLHbf7RUMaGldFmQxLsZgtDvnLu0upgUYWfalHgCk4uJb/H/JZl/4IRhUxTnJiQ5oURE3/N82z6KfRoAiRyIJRNA4V9Z1uCpSUBKxhuFz49M0vkKBUGhj58AqRik9ATOVkyUpeW51AFobr+5uEaIMEuOZce17SZeDXYPmoqVnFq4MEWiVvQSsZKxX4HiFgehK26XUbqHWnfJid7M28l9o3WVhGQNbGmVddx2y2de+DsBX8mEKXb+kdFgqNlOrfDIUh3sK0iUWSLokz1e60sQRGFegxzVUOaZlxaBZmlNbiq7kqXIWC4Jb58iaoNq+hg4JqKK2jepTcgAqLwiAruStdqWpbCdiUJ1b08USu36u6JQHV4YIXHWoyL2PsT6och99au9qY9POY4wp7dRNaY0xCCO803wStHMJrooLTUSyaedfTresDHNafGPWZ5e11ig0UjYRm/XK8kWCJpnf1MbNP/Zbj/yz1L8rAE+IQA943JPVicTe73XOQ9S/+QjedFedZcdlsWkukMBp3l0a35pQyrrewZ4luV+wlLer/cKdVmggMF1gFW8KIRa2disGlBU0trHSBu+7fzHN0l/RXl/513T5x1VB+jo8IQLvItj1EnIL13f4WSC7k/UpT+zViYGfxzcTNpn1Fr8XdXe1q7prr0+ItdYooQg8hxvHt9RL6rRIFSxKnaOptKcQiZxC1T/738YhXRq0SgrvAp3AurCObN5H7ivL2bIdfdM1saZCCJTWqDRFiMX5+VrGRb6O9rYtPt9s5SNuEFS907TWBIVyrmlspZTEcVyW5dvAtdalH39FoWc0siAqrv6udvodbUXAlgGQYvmosdF6oZx0Kowu5LYJGi0VTpEqhFUAVg4AeXf/uTGuE8ydg1sM3nj0redKEYFOiky7Kaf83vDtqrJgPtQXRt0EV6apZ/QsCuvW5/sBtIGbD58TcPZ3ly/wzvb7IoVDQEdchBDIIMZgj8j2jZBjSgLez2RYfjcUdxg2Q72cpiPI9fS+SODa7279TfKsEvyzKW9b3TuBLSzK20QW+kPY+wUcvB/474FrwH8J3Cve/01jzC9s3MI14CojfBOBatSQFwuyLwu5UBi2m4Ha7Nd+O/yFWsr2SIIgIIqi8rsjAu6euyiKCIKAIAhKJ526CzJYohCEEqUzkiRZSQSqYxMsvV8ZaNNQButoFk/WV9L5O7mvC8myzB4Lbgj+Uee8Hi80CT/LsE1QkS8DHwUQdpa+Bvwc8JeBnzTG/O01yyt/d7L2PfI3wSZlblNfn7yNIoK3WCpa6RX1dhGBep3udxiG5bj4kXrcTheIuCKWOGR36bXW5XtjTJnOcQQ+F2BtfsYG3fBCZXWDAGywDbfV+cjnda71dGRdUVkWW/Pw67s+6sTZmKpz1IKA2zaL2nz2UYbuDh6vOPDdwKvGmN/fBbJVqbfH3lUIm1jqY4VxbGnGShaSbmLkI9NafXW7QfFoz4x7yC6tw41gIbsGUlqi4Nfb1vbOup2ZudjFtCEIJHEUl+XLQCKL0GJaW6+7UIYswo3JBesfSLIsWyAaBhlI77CKBVemNpYzyLKMLM/Ic3djruuXN5eFkq3w4LEhu/K8ahWxHaf8x4lFxo1QaVMokFF6Gd10LO/YpVOQFxxUUJ1zRyArm5aU6GxxnNnmrRKeNt2HUqocx3IAqj0t+7T8fjX0IQO7IgJ/Afhp7/lHhBD/OfAZ4K+bHteQOfCRSxSeUYuP5f9qsGCl7Y5TvRRrvSFrVtj5z7683hXnTrg2uXKKZwHkBetYat29NEZKjNYoYwi8+hrrcGPliKTfG8eKGpCm2JU16EwRiICBjFGBRAuLNFJKwjBkMpkwGOxhVAZohJQEgUDpjMFwj9lshgxDMCAjSa7zioIxCiPyPEdIQa5ypJTM5jNmswlZOl8cnim4hziOyDKFlCFSLhyPtNao3HIC2lQP2bh+B3qhYHRzIZyjkbARjxBF+LGOlVDXwfhj69pizOLodD34p6NDom4AACAASURBVOt725qpv3Pv4yCs1F1+8yIt1fmc0kGqhbPoy3k42MRDtQJCiBj4T4CfLV79XeCbsaLCbeDvtOT7uBDiM0KIz5w9Olmnxoa/zaFP7qYFsgnUNca+jN3WniaRwf+rfcS3xZdlINAIlDFkSpNrQ6YU8yxDaVPR1mdZzng8JsvyQoPudnrBcDTgYnJBGAXkKifNUqIoJAwDhAApraY8CCRpmpCkc5TOuX//Hg8fnnB6espkMimR1iHNfJ6gtObo2hHxICYIJGEU2r8wqJw89LXtyotk7Ec38nfdTeetnt8PAZ6mafmnPGLu/9XnyZ8v/9mJWKv+2sqr19W0RhrXige74AT+A+Czxpg7xeDdcR+EEH8P+Octg7y4fOTDzZePdLLua0CdmeqTw6+6rs1tlcvXUOR1TYwUwkaqW3PxtpsLDUJotFJok2FQ5EojMkMUQBAu5HYpBefnp8RxTJZl7O3tobUulXlSCubzOTKKuHbtiC9+6YuMRiOee+45ppMpb775JoPBgBdeeIHbt2/z9ttv88wzzxCGIUmSEEdBRdMOhdIwsGLHaDQiTdNih7WdatuhLXIudAQO+Z150rH264puTey/b/v3rSrlPLZMVX03rugIqK6tisjgcwI1jtP3x6ivkTzPl8pcBbsgAj+EJwqI4uKR4vHPAV/cQR1bQ7tCjZJdbxM3ViFjE5GpL7y6MskpzeqXUwDgeeX5sqpfZsnqu2eq8mulLcJ2URmDMgZTEJlca1SSkGYZcRwThiEnJyflDj0axnziEz/P3t6YD3/4w2RZxs/+7M+Q54o//if+BEorfuPXf53T0zM+9rGPEYYhv/fqV9BKc+vWC0ymEx48eMDBwQG3bt3izd9/gzAQvPe972U6nRKGIe95z3s4PDwkimLSNCWKojJcmN3x1RIiL0Qgs9Rvy81k5Q7axRo3sez+HDkC4F8AUi+vi+NoY8fbNpVVIp+DurnRz1ePs9hnI9n2avI94HuAv+K9/p+FEB/FrsvXa9+6ytpol6+XYX/4yr5lzXH7twU6N01UG2tVqjA7FhUsKLjvetuUXtdceF3Z9XrdInU7XhwHpGlaqaMkMkVYcOv2bxWDWZ7y6iuvcX5xwc2bN5nNZnz6U58mCAMrEiRTvva1t5FS8iu/8kukacpgMGA+m/Gv/82/IgpDHpzc4+Jiwq/+m39VBvsMAsnp2aNysU6nF9y9+3UCGTAaDPjyl78MQBzH3L59G6UUURRx7do1Dg4OeN/73sfx8TFxHJPnzu4uCMOQNE0rVgxRGw83zr6Zsi9H5SOjL2JUAoA2zJnb0dv0CU3gK6OLAmvfFqLuqva37fx9OaBtryGbAjdq7/7iNmVu2I7K80LrvLsyu763DXTTzl0nAI35Ourzd8MoisrFadnteYmIWuuSIGitefjoEcYYHpw84HOf/RxgNdP3Hzzg/OKCZD4vy9rb22M4HJLMJmUZB/sHyMAi1PH168RxDMDh4RGHh0dEUcQzzzzDm2++hTEL91mHHFJKtFJkScJwOLTKwtmMKIpKz8P79x9w+/ZtXn/9dYbDIS+88AIvvvgCw+EYKa11IY7jxY1GDePjE2wX+6A+X03z47+rK/6WAqfU6qRBHNh2/W0Km9R7pTwGt4FK542hYh2oscxrl9fwrY6Uq9L56Z2NfZN2+ETFBc+wLHSGEAv33TRNuXv3LlJKfveV3+XzX/g8URgym80rSKK1RkjNYBiVsjkIcpUy3t9jpIcIIUiShFxlzOczTs8eMZnNSsXWYDBgNpvx5ptvMJvNSgeaMFxo+8MwZG+0x/7euJT5fSWhDCR7eyOrgzCK2XzK+cUZb771Breefw/vf/83s7c3ah63hqly4+OI1aqxrSgcVTX4Z1NINT9/G4Fpr5ht9dntRbesly74A0MEfLALy3umakdYNQeVie6Rti8hWOWaug64OsudqjjA8tprrzGdTrl37x6vvPIKUkp7mUWuyAtbtgwC2zMNYRSBt/s5IhEEAUYrrh0dcXFxwQc/+EE++clPMplMSJIEZQxRFDEcDpnPLQdyfn7OeDzm8PCQyWRSOg65sufzOek8Kd/74cukFEynE4ajIYN4AFhx4eLigsnFjIuLCz70oQ9xfHwMWHOc0qqcIHcRSt2sp5RqvI/AFx3qBMCX/33OojpvHgGozefK+V2Jl5dIJRrgyhABJ99Vhk8sW3a7FG5rVLbVgaJ6nW1cQX0Rub+m3axpgbkWVL3nTbFGRKmtv3//Aa999TVOHlnEF4gSQYyxJj6tDWmWlqbJcncrnvM8r3gNDgYD9oYDbty8YU17FxMODw4JgoD5fE48GhFIyeHhIQJBGIWezmCOEILZdFYG13AXikZBiJCSKI4ZDoe2X1Iyn8+svqJARiklaWoP4sxnKQ8fPuLevbt85CPfznPPPcdgMCgjINmQZk5nIhDowlEIVJ5jCm6gnHX3j6f885HfiRpLCj9TnRmH/+U7Jx2wjovwgkultEoVmNBKXDqU3PV3l60Y3BUYbGAs7SGnLAhAu9mrSxGzRE5a6+1Lb+va+rIMD8ndcz3fkiKxpidYrkzh3B6NMQtFp5CEpPbeOiT3H9zj5OFDXvrNl3n06BRlLPIICbK4wspoQ5rmSBkSh5I0SVBJhjQW4eZ5QppnZbuclUAIwWQ6I1UaGUa89fWvMz46Yu/wkPOLc2I5AAHnZxfEUUx+PiMexCTzKaNBzF/7qz/CT/7E/2rHpiAsYRASxDGj0QhT+CeUEYznCcKAyjS5UERRcR4h14ShJM9T7t+/y6/92r/lO7/zO3nPe95jdR+F5SMILAGzoxkgjLEn+wQYKfwgZIB1oPLlfWcF8LmTJdbfLMLPlQRCCYwOEEYTsHByqiNw2/zntBCNmtKz0g6hqTOfphSBV4fIq8OVIAI+PD4mqMGkZsr/bQWtyN0blm3H1hZtoEDOr9+5w6dffpmThw/RmOICDgPSEMgQpXOSeWIXNTAc7qGyHJXMQUrOLy64OD9HownChUOK09TP53POzs44ffSQLMsY71nl3GAw4NGjU+LY7uJBEDBP5kgZoHKF0oowHPHiizd55tlnmU4nPDx5SBAGDIdDRBAwGg5JkpRASubJnDS1SkSN873XpGnCeDxmXogPbpfXWvOFL3yBo6Mjrl+/DtQcZRYDhxRV8auyo+vl6L++/b/3/AmrF2y7br2ssGVlLyxLnXSjExZt3iz/lSMCjxOWkHUDpUq9PP/fbU2eQKn5dyf0Hp2f8dJLL/Hmm29xdnHBNJlZ9lVKtBSMx2PC4QChQjJjd4w4GnBweMQgijiazXh4csJ0NkMGIUbbvcgYe1bBnhvQxHHM8cGRld9jxWAwYBAPkIEkOJbIcIgUgjiO7O25wMH+mMFgSCAF/+L//XX29w/4wDd/gLfeegswjPbGpEXYrZs3RuXJwyRJmE7PydKkcEZK2d/fR6mc/f19ptMp4/G4VHzmec5rr73GjRs3EA1xAxz4ys+lyEC5quglupC/zzw2Wg0WJfSY6X7ca1u9FWX1mmVcaSLw+I0s2ytk/EnZhe+DW7xaa+7c+Tr/7nOf5fXXX+diOuViNrXsexQRRhE6DMiUIp9OSZMEhGBvPCaOB2RKoY0hjGPGh4ekWUYUR6AMQorCvm/Ni+73IAgYDobEcczh4QHDwYhcWaRRMmA0GhV9hNFoDykl4/EYCcxmcz7wgQ9w7fiYD33Lt3B6esrR0RFpmjKfzxmNRoUVw3olpumc2XTCaDTi5OSkPMOQZTkPHtwtPQ4vLi5QSnH37l1msxkHB0fAIlR6nSA4RHd6EK01pjiU5IsD75RJz8E7Wf+VIQJ1+b5ig+1I2wfaZKsuir2LXbxeX++0nqIrz3PCMOT+/fv8xm98kq/f/hoIQZpnDIbDsh9SSpLCU240GLA3GhUmOkmW54RhzCCKQSlUFLE3HhMGAZEMiaOY4XCAEIKDgwMGgwHxIEZq+OAHP8DB/gF/9GPfym/91ld4/auvk+cZd0/PkEFAmmUk8znzJCNNU0ajIUYba/sHTk/PSBKrMLSKPjg6ukaapuS5jcU3mUwYDmKCIGQ2nREEIWmSMogHRFHM4eH7SJKE2WzG4eEh87m1YFxcXHB0dFzxGWjakX2W3/029cjKPefOdwxbUhzWZrFtQ2mrr15PmwLa/72sS/AUoD3hyhCBRihk4OZPm1PO1ryFqal87EEImtKsI1c2KRSVVgziQekHfv/+fV5++WVOT08JoohkPkcGAbP5nDCK2NvfZ7w/5qhAwDRNCYtd3SrLBIEMiMIQIwSj0Yi94ZA8yxlGA4bDIXt7e0wmE46OjhiNRiileOvNN5klKfPkhDRPeHR2zsVsynA45Pj4JlEUln4PUgaEYcAgjsnSDGOq12vr4jnPMyaTqUVAZQjDmCxNyZKE6eSCJE2ZTqfMZjOyLLOIfzTm/v17yIL7GI1GZFnGvXt3eeaZ51oVsw7Bnc+C0wEYYxC63dW3nEdbIP6LJgRrnud+IkTbCnEkpLHsQlm8VGO5eb7bFYM73oGB1kVyVcFxAcYYkiTh5Zdf5tGjRwgEWZ5xNrlAFd5we+Mx+4cHBGGAyXLmc7tjjkYjiDXj8Zg4iIjiAdcOD5nP5hil2BuNrN0+zVG5Yj5PSNOM8/MLlNIcHBzw/g9+CC0kURzx8ue+wvjwkPd/8ENMJlNyZc/qZ3leKAVzhJAkacZ8OkWrRbzBXOWlkk7l9vSh0QuXZyEEYSAIw4jhcI/9/QOSeQICTh6coHRCGEZkmY1KdHJygpSS/f19bt16D0dHR41yvW/uc3oVR4yE3kR/s4xg24oSncjeAzbTJFThyhGB7aXylnKLQW48sHOJ0G7GbIcgCMjznCAIePXVV3n77bcZDAZMJhMm8ylpllnZt9CaZ8Wx3tnZBfFgwFPXrxOFIVEcc+vWLYyBMLBOQfOLKclsRigEwyhiNBwzHI7KEGJRFBPH9hBPLkBpQzKdM5lZh6AkSQjCkIszK5snhVtxnucc7O8zmU5JplOUsicPlVqY3PI0Q7udWCxO+EkpwWgCKRkOh1a5Wbg+37jxFBfTE67fuI4Qgnv37jGfz8nznDt37vD2229zeHhYGW/f9u+CfjrXZJuoG3m73MCbnrfaWDq4gccFV44ILFn7W5CoK5xWQ0jOkq0TxW/flXhRb9WWbIwoRARYJ/RC2+mxvotFYCP5TqYTXn31VcIwZDqdkGYJySwhCkKyPCeOA7J5wuHBIUjJ9edvMRgOeeqpp8qzAPaGP6sIU0px7eiQ6MZ1BnGM0ZpZmpOmCReTc4y2tvXx3pjJ5AIRx4X2HIajEUJIHjx4QBhF5EleBtZUWqOV5vT0nPlshtGaF154gYeP3gCtmc1nGKPJsxzJQlnqH8qx4oNhMIhJ0oTBYIgQtt5r146R0nIK83mCMdh2hBEPTmwsCiElWZpa5C4iM2VK2bZpTV7oS0TDTNd9QNo0/cum/Oo5hVXQJeMvr4FifQtTaezC4alLkFgPrgQREFRRrN9+aWi9ew+QdbaNYpKh4ononm2aYuA92a/bZWkZmpyKmnaMLq4gECEqN6RJyqNHp8V5/jlK5eSZYm88YjQYcfPmTUZ7exwdHVoFYhQxmUyZnE/IstQq2OYpw8GAIJAEQpCmKRcXF9yZTJhNp6R5XprthBDWiSeQqFxBEBQGbMlwf4wxkKWK2WzGeLjPYBCjFShlQ5bNJglZpghDydHhNe4N7hAHEfPZDHQRLs3bhf3xKMOrC0GSpmiwIkuSMBiOGY/3ODk5YTAYcuvWIUdH17h/7x5nZ2dkeY4uRCdnDXDj7epI0pRBFBdtsH4V3Wa9hvcmWPrmdAz1A01Na6IJZHmasEYgrMzifMYWbVm1kYj2zbENrgQR8KGvT//KxD3r8H+bhl/rQl02bVoAq8QCpa2d/pOf/CTGmDImXxiGXLtmnWTiOLaa/zTlzTfeJM9zBqMRR0f2RJ+UksFgQBRFZHnONEmYTCacnZ1xcXFRaOct8mjPnDkYDIhkRJImaANCCowJSLMcpRVCRuUBIWOsEtL1Ocuy4jzBiDfffNOKBHli/QGMRgpp7y9EL+24MhClIjMIQxvFOAwLp2Cb7vz8vOzfzZs3ubi44PTsjJOHD0tlYZqm5QlGbezNv2EYEgUBEoH2iIAvGvq7esfslkvDtd8RHUd4mqAe16BiOt5SR7ULHdeVIwJdUO1w9ZDQTuvZNF/DDldfWH0tBlprXnrpJZ6/9TxRFHF8fGwP00xm3LlzB621jfUnJUdHRzz77LMcHR9zcHBQRudJ05RHp6dcnJ+TJYmNj1/8W+5gRXucfV1rXR5RFsIGDx2Nhty4+TQIwWtf/X0QAhVUg304TmJvb88iRZpijIIiDoDAarS1si7PxsUMLPAqDIOSaIVhyHA4LI8ZD+KYs7Mz4jhmb2+v9Gp8+umnUXfucPv2bd7//vcveQAmqfVKtByODVBiI6YtOIE6l9ZECKoIW3MbbpjzOvjBSJrCgS3VsyZ0WTj6wEoiIIT4+8CfBe4aY76teHcde+fAe7GBQ37QFMFEhRB/A/hhQAF/zRjzi+s0qI0avxu0+n3ATf6q/ty7d48XXniBo2tHXFycc3Jyn69//etMJjOMsSf4bty4wXPPPUdc+OM7n//z83Mmkwmz2Yzz83Pm8zna84t3ijOtteUCvMAbWZZxfn4OwKA4u59nGQ8ePCCOYwQUMnah4JOyYLEFw8EQTBH7LgyQMiBPEgIpCeIB2ii0dM451jvR1msVd8PhkMFgUP4LMBwOi4ApsSUIxcEhIQSj4ZAbN26UffQjACVJUugqFFEYos0yn9dEoJvmZqFQXOjiV/sJLOf3xYam+JLvFPThBP4B8L8B/6f37seAf2mM+XEhxI8Vzz8qhPjD2MjD3wo8D/yKEOJDxm4JO4d1tbuNZdiC/MwNabplMX+SO5U93sLxn+vggnE89dRT3Ll7h5OTB0wm55yfnxHHIw4PD3nxxRe5efNmJWApwHQ6JUkS5vN5iRiCZeLj7PsuJoB79tvqkC1NUtI0ZyqlPdglQGvKXTsIAjD26K8q2iMxKJVbn3ohkAKkCNHa2epd/yEIQsbjPQ4PrY8CUHoU2rlUSClKEciNURCGDAYDTk5OypuAnIiSpqn1kCxOPe4V3o1K2+vVttXsr0sA6s8+F+UHPlkorBey/bptXDf9SiJgjPm3Qoj31l5/P/Cnit//EPhV4EeL9//UGJMAXxVC/B7wx4BPrqrnUimiEGupD5ba0jGmqwhAE8tXVxDW8zkX14cPH/Lo4cPS3LW/f8Bzz93i+vXrPPXUU+R5zsnJSXGQxoJDHN8klszn5FQXbhlhWAiCMESKauRaY+wNRPb0oj0BqLWxp/IwCBMQBCFxNCgckgxSBsXStTaJPMtKAmTMcmhuY2zcgoODfQ4OjhgORyUH4EyEQOFToJaCsbh+gtUXuPJLpyAsO2q0LgmP8aINrZqr5vdVZe+667ZJNFyti7hc2FQn8IwpgokaY24LIZ4u3t8CPuWle6t4tzXswimiDgsJb8tyeuwI0L8PAnj48CGTyQRtDJPJhCiK+KZveg83bz5TsrxOwZckCXEck+a5PegzGJSKxMFgwCwMmRZRfOoKKuP99i9A1VqzNxiWrr5gQ4obtbDJqFyhAnuwSQobKCTNUg6PRtZM+OLzvP7aayhlDylZM1+AwRBF9sjy3p7lbKSwF534txxNp1NGo5FVEBobnWg+ny/GqVD6ueAj4/F4yQ1YF+ZCe8lHIQZ13BXRBBWivVbOfmX78RCb4DLWvg+7Vgw2uuk3JhTi48DHAZ56djWdWDUIPiXtO1GXMaH1tlS+9yxHFPH30jRlMplwfHydZ599imvXjpjNrPZ7PB7bOIBJwnQ65fr168hCq+5Y+TzPSZLEHpstzIBOfChFE9vgEqGAMjZfKANSkyIMhfZbgBFIIciLW4zsrm6lqCzLSeYp6chq4gWWg1AqJ4ojhDDIgNJN2fXj5s2bzGcpaZqVbXfRh+wRY0UYBiXB8+VpZ9FwisnSjVnYexYc4bPigTW5Ga1b3dGb5rOcF0yvfH3BFw26LrG5bNiUCNwRRWhxIcRzwN3i/VvAi166F4C3mwowPe4dWBdaWSq32LeCdueMvpxAX5BScF5ow69du8aHPvRBjFaFf37Io0ePePbZZxmPxwRBUJr+Do6uEUVgY/pZZV9cOAXpXJVn3o1Z7EBS2ivQhBAlUREs3GxVrojiASrNbLQiLHGI4iFRGJAnKaO9EfvjfbS+QGuDVpo0y3jrra+RFdGBB3FMFAfEg6hE4CiKSJKEu3fvkcytyXE0tEeMZWB3/tlsThxZApVlVrlpr0uz5yFwbS1EAH8rEEJAIYbkmdVPuKvdFltA17zV9+DLOcdSKiRpDiRy2bApEfgE8JeAHy/+/Xnv/T8RQvwEVjH4QeClbRrY7ollEKKZoffdJdaZoLozRpWoLOs2rWLb4Ls61QnRKvONL4OXMrM0zOcXRIFksL/P0f4BZ+dnCCNKLfnFxQUHBwdcv36d4+NjZvM508kcrWBvb8/K1kYyHOyxN9wvriELEATFKTyNkAFCWAXe8fXr/OAP/nl++Zd/hbv37llbe6oxGobDmGkRjCTNABnw9I3nuTaOGIiEb/vDH+bh2QW/+YVXOE1TApmyv7fHzaducHF+yvHxETIwPDp9hAwDG3JMZaRpRiBDcmXQqSaUATpUSCMwRtgASxrSeY7OZ3ZelSA3hsEgKIKoQBTYswtuFiQQSNApBecSorVAa4kQAfZ6u2KVWM1w43po0iTVdUCOmPbRBzVUYNewcSHgNMigcCCqKat960aX8rna2F6bXx8T4U9jlYA3hRBvAf8DFvl/Rgjxw8AbwJ8vGvclIcTPAL8N5MBfvSzLQB22tZVuUp+zc69bX5d92JmR5vM5h4eHjEbWr98e9x2iMNy8ebOU312cvsFgwM2bo0p0nKeeeppv+qYXyNOUz332C0RRzHhvzMXFBbPZjNlsjtKpjfgjBF/60m9zdnYGxhBHEWhrFZsnibXPI4kGAQER55OHzC5SfuA/+i6+49u/hX/0j/8ZmhRNxq1bL/Jn/vR38cpXfoenP/KtPHr0EK0zHj56aD0RMUgREAUAojh8BEiJQWFvGTAok5OrlExpQh3YW4oAhUKZwiXaFLZ3PCWrfSAoohRZjsCOrw2/Jq15wzgt/JprZQumr0rwDQhTnrS07zVGrCcaVNaTMRUep0/P+lgHfqjl03e3pP9bwN/qUfdKeNy+AX0RedN2rSrffVfKer7t7e2V2u/xeEwgA1Kd2+CehezsHGfiOEbIqDi3n5by9N27D8AYjo+PS5l6PB4XTkMZuUqYp3O0Unz5y19mb2+P4+PrzOYz0rOEcbjPJJmADEgygxQxgQiZqSn74yFf/J0v8vxzT/F7X/0Kd04mBIMxDx8+4t99/vMorTh9+JCzs4dok3N2egbFvYJhaG3+Ant0WgpQOiXNDIEOiEWMQaF0htYCJUAEAilBqRyFJRyhiQhkiNH2zAUYhDEIbPh0pZbNbP4+u4pza54oVhKCVr1Qi8mwS6TcGA96ahSvnMfgJh1+3FyAq9PWu575sQ18U6FS1Xj3i+hCqrzC3N034CIFK6UR0pTigjPDTadTtFI8/fTTaK159dVXkVKyt7fHwUFAmkwx+oAkTYjCiGvXj/m+7/3TnJ5N+P3X3uT2nTu88bU3uH3nPkmiieKA4WjMcLTH9OKURw8vGI0PmE5S9sb7CDkgSzPeeus2L77nFl/60he4cXyE0jkYQzKbYxQEMmcu5gUrrYkiq8cYDkcMhwMIQqSxAowSEm1cTILCXVfnhRXBlH118y6EOza1mCtHFMMwRLPw2e9abxux+F7eLkLgOIHyjErN+ag/cdrexnVliMDayN/R78viINocTFY5CLWlaxML8jxnb28PIWykH6cpt7ZzBYUm3y0cJxoovXBC8X3ZBYI8z8oDNsZYP3+tNVIYgsDqGrTWZGnKJz/9m8RxzGuvvMZbb79Nktsjwe9//we5e++MKByg8wCRDzg/N/ziL36S8fgZciNJUkuQzs7O+Nxn73F4eMDFxZR4EAGSOA7JU5BESBEhhCbXGfNpQpYmhOGU/YMDrl0LGI32QCkwAQiDzkBEEqMlWgniKMDk1g6RzDOMtoeZrEvw8mlAd7ZhcYX5MqKJHsShKc8u19x6iua6T8v6SvArQwT6QpPjRhd13pUvQFtbtpn7xt3C2HLd7TnObdadsPPT+0dxrWms6gRTchJCcHJiowY7rqI81KKt1nxa3Cg0OT/n0YMHPDp9RJYZJtMLlJF8/w/8p/yRj3yUn/yJn0Jrw3ymUFlEtHfIV1+7z0e//d/npZc+S0iEys8I45gXXnyRH/j+P8vnPvsyv/VbX0BrRRyHDIIh9+9ccP/OHcCGRo8kmILTmZ8KsgvJ9eOQ8f5hMYmGKAxBKIIgJDSSdKKJI4MIrdXEmAURrGOCG9O6iW9TBK6YpMXyOYCmdKs4i8ct/jp4VxGBTdj8dXL0mYRdT1R9twJKZHU2/zJQZqH0Ks/E11hHe+XXosfOFBcGATpXS2cHkjRFpTO0yjk+PuZP/sk/wSc+8c/JCvFCFWG5onDA6ekp/+ZXP4kxdtdVuWQ+TzkPpmRpxtHRDWtinM9ASGazKV955Sv89E//UzCW6zg6PAKRQD7g0b3bfPGzr6CVACHB5GDUov3GqgdFEDAYxYz3x1y/cY2j4wOuXR/z9DM3uHbtGoOxVWrG0QCj7eUdxl1GUIC/u0shyjst6vOwCUFYVyG8qnzfj6MPNBKW3i2y8K4iApcNq9j6usfdLuv0605Tq7EPgqC8ZruMjRdKeyTX0xnY9lQXjrtNSBVXe7s2Ox/7+XzOZDIhMPb8/3Qy4WtvvY3RmovJBKM13/HvfQfxcMjLXJRKaAAAIABJREFUv/l5fv3Xf4M0EQTBGJ0HpNmcXGsuZjZ82K9/6tfI9JwknzIM7TmBOIbpdIZAoVSOSBRhlCPyIXE4Jgr2STNj8V3ni7PzuiB2QqBTQ67hbD5j8mjOW8FbyMAw2o85PrrGU+874lu+5cPFwaKFlr02yp5fhB0naQcEWHBMdULQR5HbxQWsC4Jlwt4HtvVovBJEwFCVgRYDUHPUcOafHl3tqyxsQvw2xUzTrt2tgm23M/ttqpcdeDuBEIK90Yjz8wvLDVSKtYd5/ItETeHVJoRABgGH146Jo4hH9x8gRFqeErTxBTPiwJBlNhTYpz/1KXvoSCmM1rz06ZeRcYg9RRASRxFa26Ci0dAwCGIyZRgFMYqUeXqOETlaBQgMw6E1WQaFxUvnOWFsyLIcaSQRQ7TRhV9HZM1jhsWlIcrGICBPC1OgKI4cS3SW8+jkjIf5HX7/jTf4yB/5iHWqckS18CHwRn4JuR3C92XZ2zaJ8jvNyNi2txjvo3PhpkE5eNliwpUgAt1gz6T7C/+dgPaFUth7l8A5ES3kdH/Xr7OG7llrzSRNMIGN5iPCEBNIZGyj5UodWwWYVhhjkQItyDODGWSMdIDJDZnUSGl47/Uh73n2GV5OTzk9Oefho4fMkgS0QoqMJFNkueJgfx8lBBSnArXWRKHm/HyGDAaAxAhBrjKk1BgOwAii0N70EwR7DIaS2XRGnieEIWS5JgoFCmWPEesQMx8gQoUaTDBhgr1HTAO6mFqNUjkykoSDiDyfoUxArgxSDDBCkqSGMB6AkISzkEBG3H7zDu973/uRkR0PhACdIpCFXsgGNNEKZBSCWUQE8nfzdbgA/84CQ+a+lLO/sFCstvvXN5g+3MCuiMPVJwL1gdiABiwV0UJhmxCz63t3m0RpzvLBNwM1gVKKMAjAGLRSyEIvYG8Jtuxuli3uDqyUo30CA1mekecaghClDReTKVmWkefK7s5GoHKF9sxnURQDpojOozk8PEBpiTERuQ6K0GOmIEJgjEShiFVud+lhRCwlAo02qb0yPbA3IVmznHXtlcIdVvI4KmHACEQQYrQmSzNkIBGBJM9SsjwhjCKENCjr60MQSaI4LMQHN77F3LqxMdYpp3go7grUlbmoi3uNM9qJlA1c347U0j3N/RvD1ScCOwCzI1v++vUua6nbzIxAeTuOHx/AHeoRwnJDRpvysIzbsYUQiMLV1hhrI3frdTZPmFxMmU4nzOczvyHW3IiNMOwOAoE9bDOd2rsBghC0kUhpiYNwLq1i0YcoijDG5hMItDZEoUBrURwztlF9jAlAODMnhTWjISyXEBh3MzASbRSYzJ6BQNgr1UN75iEeDLh2dA0jC+ImQGuBizLpK0IrNw413DzURgSqHnmsxOulzaU7+TsO7yoicJnmvkuBNlnQLAJU+rBYpNreAlTcEOx2KqUUedpya24Zpceyv8ZY99EoCsvAoS7YhhD2/L+7rDQOAkBUiMtwOCxuFBqhTUCSOPHGHvyRRqKNJgoj4oElImmWoJVGoMlzu/vaG4kL4iSsUjM31nFISmcJoDKxNs7gkPF4j3gQM0nOMUYRxQFBZNDkCGlA2LFIs4xBZGMNSCMtJ4BGNiC4c9Kp6wN6y99rL8Dt9/DLNhxeOSJwKd5+tUXWNtFdTkBN7Votk7WLAy4Wnv/O7VgGu7s6E5/bvZTSZFletsffuey/xYIudCh5npWIn2V5uZqksFGFlbJhvpVQ5IFFqDiKQUAg7bn+0WgEIiJJzu2urgVRGCGMQWsIQokQltiMRgMmkymBDNA6BWMPeRns1eHO5Gl0IaUL2TiGRitkGNqzE+MRg9RGJEJqRnsxo70YTYbWOfNZzmQyARmTpilBVHA0DTJ+fT6dz8TW0OCTsE65betstwrB9rKuDBHwT9NtW06ziWi9MurQpMTrWRpOM+12fxett376rPwtKD0CffOeEIvQY7JmQXCKKIHdCbXR5SUmp49OmU4n9kbhICDJcowuOAokxghUbkN2m6E9Unx4cMDF9IyHDx/y3PMvMhwq5qll0ZVSEFhuIstThIA0s3UK6dvobShyEQiuXTvm4ODQXiiap4X+IULraRGyTJTadavPyJnN5xhh0FIxnU4ZjCLSdE4QwnAUEYxisuSCvf09hntBJdS4lVpalGtm2SLVpZFvUxaWz2Izp6MmWX8dE7RvUehXWzNcGSKwDVy2CWVjKJRhWi9kUhei2gWcbJp0I0xxfj5rvDGpSbkowAbLCAoFnKKs4+Bwn8PDQ15/423yPLcBNlQKWhEIAQiSeYrWBiEs+24vC025OD8nSRL29kZMZmeEYYzOfe7DkGYpaZYWhAn8ewiVUTz91HW+93u/m+l0xmc+85sYrTk8NAxHD4HTxqFTaca9e/cIo4BMzyFPObxxxHRq7DmHWVGXgsF+jBBhGTjVyvwSUSPc9vyAi+3XvWaakLqusff9BOoKxiJHZx27ge3r+ANBBLphmQtYl+Xq63PQkLE8J17ey+dditlWlgua4VyHm9rjCIorQ2AVZWmakqcKMYzRxTVcDjln8xlZmpPM52RZgjSaKBhwsH+EGBY6AQRaaeZqzjxJiQcDzs7OkHJEkswZBQNylZNmqtAfSMCGP7cyv92dpLTKwzCwfgVCCN54443ivgJtRYZ8cRdhxePdWFdgd2YCA4QxR0c3kIHi4NoY0ChtxZwkSYlTaa88z/fACDQ5/il2V0+eZ+QqQrCo241pk2muiwN0v32OzhHG6pLpFivfabhSRKBJc14ZMsc/iQYOyFmDSsa4+buv1W6rf1X7eucxNsCm0m73zwuOoEoAlkyYxQGXRllRLJSANtKPdaJBYJVixX8qzzEoHp3aG3qOjg6Jo5jT8xlplqGVtif7tCg8FEeYQrOfJHPe+03fxLX0gDfefJuTkxOCcA9tQi4uLgiDCI0N/pEVdw1OJheFIjLGBJI4kkhpUMpwenrKSy+9xO3bX2cymRJHIUKGBEX0I8SCMXZmPme+FBhkHNpQZjIgVzlamULsCIkigYhs9jTNyLMcIWzgknogGCFEYfrMS49BN6z1tdcHWRdWhwZxs2IYallvtbLqxGcdB7euNq6CK0EEfF/4ZfAcLYw19y27hnrIZIrnNpcto+kQj3YMVtOvVIbSLjyXd2mKAEThzFJRXC6CTvpyv9YahEabDClsIM7hcESuJWEQEBGTKY0UgtlkAgJOgNNpQjadkyUpkoBQDlA6gGBAGBpyozibzZEyZLw3YBBobj13nb2D9/Hw4SOyTCMCwWw6JxqGZDonpIggTG79GXTOPJkSBQeIaIBBlxMyn895/auvFzcZRyRJijSSMLJBR3NtEIFBSEMURqg8QGmNMYXeI5+Ta8Xtt99mMIrJ8gwCU5xryBnujdAZZHNFaCKUUWCUvSaABUIZU5yudAhqWk7c1TYKn1uoI6rV2ViitZjUBWcBBqRvBl0Qc7eON9c3lZkWS7qy1n2xZAudgGi+fOR/Af5jIAVeBf6yMeaREOK9wO8AXy6yf8oY81/17UtLCzZMe3mY3mbrr2uiFzqArLDJ1+zQBhZXcvnltCuhwjAgy1Lm8xn37t2rfDfGxg9wt/RqrXnq6aeZzGakSUIyt4gexwMyrLdhIGxo7jzPGQxjojgmDgzD4ZCzszPCIMBoTTyMkDInTxOMCDDKcizaZAVyZYRhQJ6nyD0bNjzPc8IAdKrIM83e+MDGJAgDwiAkHsZYw769IUhYNmCBGFojwiKMmKA89JTmCeEgJI4jUpmgjEabnGSWluMqaix5hXVn89XRqMi1M7B2/rbvfQhBhWPxiFlzK7rb1ieO0T8Avq/27peBbzPGfAR4Bfgb3rdXjTEfLf62JADt4CtldnmIYxfgm/ucKdCXOevUf8FW1hxaaqypY2eddQAo796bTCacnJyQZVl58ch8Pmc6mfDo9JR5kqK0IQgt8lg9gWWrdcE9CGHIshQwHB9f51s/8m2AZDQeW31Clhabu/baJcq7Ez/84Q8X/gWZvRcwS+0YFAd3RqMRB4cHDIbWDCnDsFiBGhmECBGQpTZikEQRjwJkqAnjECkXl3SEgSSKQtxdBotryFPverHlG4Jcuk0VyW3z1yNnrzL8zaXvX31tLcslq2ElETDG/FssV+m/+yVjjONxPoWNKvzYoQ/yX5blYNVi8BG7a9Ib/zxFU71/DhEqYcNrdTnlY5IkXFxccDGZQBCCDBAyIIxCwjggCgOktPH+h8MBkZQ8ffMGw+GIO3cf8PxzzzBPM/b2xoyGI0bDEVmakKVzZNkO6zw0Ho/5nu/5Hl544cUS0awnodXTDEcjbt16HscNaaVQeQbaikc6NwyiEYdHR9y4eYMbT9/g6WdvcHR9n9FowPWb17l2fMTh4QHH148JAhsdyd1ZCIu7BVplcA9pHi/05xL6tG3X7d+FTuC/wN5L6OB9QojPAWfAf2eM+f+aMgnv3oGbzz7fWni9w7t0plhHQdjHo8ylWTj3qCVOoCl9Q0GV7z6xc7oB59mnlCoDhPjuxm7BT6dT7t57wCAICYrQWiq3Hnui0NwjbHhvlaV89Ns/wu/+7m/ze6+9xgvvfYF4MEAbyNIUpXIGg7g8nmyMwaAxGMLQhj6P49jqJ6KA0WiI0TlBOGQ0HNr4BSrHaEUYxshAYK8yKawhWrE3PuDwaJ8wFgQRzOdTHtw74dlnn0VISPM5o70Bt+9+nWvH10DPkGGIDCjdqG0cw+Uo1V27cNdm0nedrbOe2tL04TS66vFFifrvNtiKCAgh/lus8/c/Ll7dBt5jjHkghPijwP8jhPhWY8xZQ4OX7h1osodvC0tlblhOF2FoAp+1d2m7dAh1+zMsYgu62AB+WmNMeWWXm3znYOQgDEPSNOXrd++yPxpjZIDBngTMdU5oAnIliOMIrTLCUHDzxjEXFxPyXPFzn/glJtM5+wdHjEZDsnzKcDAgyTKypLguzSgbCXkwLH0QZGCvKNNGExZiQBBInnn6aU7PLjg9ndqQZoOBvfpcWbt9ls8Z74+IYgnC+hoMBgNk4f0oA/H/s/dmsZZl6Z3X71trD2e4cwyZkZGRmVWVdpVdxrNaCORu1I1k84AMSIB5ACO1AEtGgNQvuMUDaskSD3TzgkAyskQjQTeWjKCFkJC7hYwbdXvotmW3XWVnVWZVRGZGRmTEnc+w914DD2uvffbZd5/h3oioimr1lzoZ5+5hrXXW8K1v/b8Jh8MTHJKMrciTJGgQax+LqqpI87RXnRcZs3cOXlGyj+vM2S62FP9tq377aFUYfu99iNjcmlft1HKr6MZMQER+ngAY/iVf1+pDDsKi/v6PROSbwPcDv7eurK711neMpE/X2G/Jtd3Nq3SzM+T1ym8zm2iN2J4Iz549YzosSLMBxgFl7YxjHU5prPdoF2INjodDqrKitI7KWJROcNaFcOcmmBpniUZ8hghYHwBC6yx/8Ad/wOnpCdG6McsyRoOMz599zu7OkGfPnyESTIw1IYS4TnTtkRj8Fs7OnjOdJXgcZVWQpEH///Tzp6SpRhKhKKdUpmQ6m+AThcXjfEaSJ1jnSHzwS+h2eXN06koBr2Rk+mnTkTBKWDEASp/EsnY+uUWi07hxbDKPvhETEJGfISQg/Qve+2nr+h3g2HtvReSLhOQjH24s8IrKb6mumzTxFdJ6LtAncr5KJtDGAVTLvsAY05jmZvkAnaaoJCFxkKQJzijAYqxDKkOahkUzHAr7+3scn12ChDgAwe/AIwpigjGR2qvQ+eaI8ujRo9BDEgyXDg4O2N/d4ez8DGMtJ8cnoBR5nqJMcEvWSUIiCWmeo1OhMgXGlZRlQZJmmDrE2Xw2wzpNKhluXqETTVmU+MqjEo1OpDHIWiW1fbfnUnfHBxr8JP7b/vS1d5PmwNcbWxszemFJQPqTj/wSkAO/URceVYF/HvhrImIIlhq/4L0/7i34e5VuIO7dvKpV6qhA8ZjQtplvc/3FO4KIJk0SKhukBqVD+nDlFMZajBISLWQZjMdDnp1eIKLIsjwY6dR5A2fTWW3tV4c+RyMSAoiomJi09kY8PDhAK2qrx6AlSNOUQTLEzlUIoS6wv7/P3uGAfJiEI0xR8emnn3Lr6FbY0cRzOb1gMM4Z746wzpANUibTCcX0ksFwSD5Im98edtLujhsEP+cC8Lp0jxeTBnwDRq4AJZsKgm1F+70ubrQwE4/WmH11bWpLoLbmbF2uw5smH/nVFc/+OvDrm8q8CW2zoLYBDX3r/93yV1kZBABsu3ZdV/zvfVYtwD2gMTduc3ZYBBLtUnvQYz7BPE05Ojjg7PKSUxMyDYtOSLVgjMfUxi62cmSpojIGrTOsMyRZQlmVHN2+w6efPCbJcuYO8C7EDBBFmulgD+GlNoqKUY0TnLd4URgP2oV6PR6vHE4MohKGwzE6Cbb/RVkwn88QBVmWBnPl8RiVgBAYX6ITUp0wtSETc5IEUNQag9JDnIsJShf93Phw9DDXZgyEhtG3wdhVY03zuCeAkb4Bdr33NMZrRBuIhS2Ecx5jHNbY5bJE8CpqYjewJ6GOYBQ4jSfkl4wbxKo50qbXwmLwOrRKTLpGCct/dnCBVSVvs6RflsjfdTHugoKR4gBHMbgdZKQtDlZlSTEvuHV0RJqlPHnyGdYKqCTY6miFkxDbX2EY5Ck6TalKQATnPaWpGO3skA/HaEnRaRW0DKIQFbQTxoaestZTVZaLs3P2H9zDudr0N8lBhDQdYOZTUB6U4/LyEv3MoXQwrzbWYCvDxfk5g2HOxfk5OkvwynN5oRAtZHn4rUURgqZqI0gSTKCVhFiMYTxin9WLxPvG7Lp3HnnfTIIu2r52rJcckvzyvz4e0yCYkoMxYfe3xoXoT8Sze/2KCyxFZD1gvghhVsdrUAst0TYMAL6HmMCNzCm/i/QieEDbTqCN/LfP/LA8ObrqRKVUS40Xnp8X85CRKEYjUgqtJUTrEY1OYF4YdnZ2GY3GTFyJ9YtwZgFn0JRFnb9AqSboSVmWi7agwINzIXahSLAlyPOcpA4kYu1CzTm9nFAVMyRx9UKxpOmAyWRGVQU34tRl6FRRlS4ISjLAmIosy5hMJuSDlHSQUlXmCnre7svrGgy9+KbD0s4SjwDRliNqAtrtjN+3qXvpGaFZ/FFVvI1q+3uGCdxcubep2Jdbbh8weFPqTua2ejDWBTTedm1Jod2GPM9RSvHs82fM5vNaZA7Zb7VOUDrFo7Buxtn5JPhnSFDzeefC7qoUZRWOEUpUw6giJuGcY39/n9lshgWUdogodvf2mh2pLEtG+3ukieby9DKYChO8Jb11UAWswlnL7f0DRqMhSZowK6aMxuOw0NOUJBVEBd+Jg4MRx6en7OzsBIZEHX5NLZ+NI9nagrE9Xt1n+sa0r6ytKIrrLfTfGLOUOLZvoa4DCFcCn9BIAW0M4HvmONB33lqFaq4auG0WXdwV2zvnVuLeNeuJz92EEcQdsuui2v29cfF775vduo0jxLJMHVqsKIo6+KghEalt8oXhaIy14IqChw8/5vhsUic6WTjd5Hne7F5KJ5h5RVWWzf3o9uy8xwh4WyxNSOeDSfJ0OiWt/R+UViRpgojBOwU+HD0cQqIzBsNhc7bd3dlFp0FyGY5yprMJSZKEbERJAAWjrUCMZ9DXr8Hq2fX25zbUt1BhO6YfpYC2deeq+X1dDCxKf20GsO3ve22YQJv6O+CaCvot6Io4HRdctz3LjdtUaP1Y/0CuEs+k9S70hyTvUnt3iROszTQa/4KiQJGws7MTGEFVgQg6+uqj8OLROmU6m+M8zOcl3vpmgSml0K3dJdGaCmqb/XA8ODs7q3P9aZyTRY5EaxFl8boOm17/4njMCbiM1KpGCz7oyI012CIwt7KqyJRmNisoylmtuqy4vAwhyufzOV5DURSh/truoI+6dgKvisIYLo9T26ZjW9qGYQUM6Grmon8qMIHvFA7Q1Q7ciESWotmsqufKOz3PbLMbRDAwniuNMY3ovZB0gvRjreX45JjZvMATzvmiNTOtKdwFiGIgBufhcjKhqiw7wxHzctq0JYqw1tqQVlyEi4uLRgowxjAej0lEmE4rwPPpJ5+GNtaAnDEGU4XU6cIizl/dWkQJiUp49vln8MyA8lTW8tmnc5TyeAlhxkfjIVVVUlUJDo91FWgw1Whjn4Wozi7o1G9IV1RxPfEk28+2mcC6sV0l/q9jBE1WpZ70Zdusn+8pJvAqjD36B+TmjGfdm1d2/yh9yLLHW0ild9VDrPd9FmJmn/QgdTBPay1igm5+MVk8VWlw1RyVpAwGAcB74949Pn7+bSbTCcNRzmg0akT+NE0RNCfnU8bjcZPpOB5hYh8kSVKbERdorULyEKWCqbN3FJMCnejgu+AjIh/MgY/uHJHlCp0Kk8kFSZohWhBxwRS5zjUwn8/Z2xtgXAALI2MyxqCTfskpAINmyUp1nQ59EzUM16+fm32SQFel3R7jPkxg3YJeqAOvqj830asxoP4eJB/kts3Pbbi/UsXYg3l0XYcbtLiz8NcxgbIsm92/jQx3gaE0TWvgrJ58IlS1rX9RVlTG4jwcn54wnc1wQYRgPB6zMx4HE1+tybKMLE2bcOFRpNc6mP8WRUExn6EkuDm/8eZdlA4ahMpUtYZixnxe4KOvD+GcrpSAM1hbkWSaLM8Y744Y74xJ04Tx7i5VVbK7t9ukXtM6aX4ftbqsHXqt3QfQDuu+YSC3pIVBzmqT3jC3akOllRW3GULr3/Znbf3RuOj6lpGvvSTQpuscDbZRrawfEN9+eOlOl9wKDr6qnnUMwXsfgmm4YJLrjSXJVIgFgDRRhOP5P8YgdM6RJNE2oD5jo/D1sb8xS7UWZ0ytUxa0FhQzUlNRTlMuLi1pMeEw89jRmFlRUKExPuX56ZRbd+9iK4/IjPFoj2JucJVDecFXFmNKyiQl12BzKKYF7719nw+/+W3EeMaDDJ9WXFRThrmQpwlaNJIE/wPvEmyZ4coMlWny3ONtyt5ozLyccnRwB+USnJmT6pREaSpKoKQophzoAeId3gheOaKhTjybJ0nwhYhHqdh3fdLAOkxnWUuzPDOuvKc8xpQ4X+Kx9aNRdRvLiYB1ZNKhyOClGcqPNdS3GqOpJFGkqUKp62ENkV5LJvAqxP6FSLVNnT2Dv6LcTeL/Ngxg1bORYizBuKO0n42TMTgO2TqoZ9DTB4l/OeiK1OHZwOMdeAmTzFnBJwkPHz7iq1/9Kudnp0wri7UefCgzH+RkSUbpAwaQD3LyPGM2nWCdq52CPd4Hxuh8SHT69v17/NnXvwFimc+m7B/s8tZbb/HJR09qsDFYukm9aCs7B8m4uLxEdIWzis+eTEKQUFcwGObM51MGw5zZZEDlK/KRQmdS50KsyPMhsNynCwa97F9w0/nWtuCUTjnxepQwl30a2lt7a6tv6fsX15ZqXK4faawDV7axG2qvh15LJvAq6DsFMG7Thn410zK1d5qIvvc915YilGopGIiqsDBRGiS+0xZbGw5FEXo0GvH48WOm0wmlShHRKBXCmCc64fzsjOl0is5GiNYkWYZoTWnK4OTrQfkQZ6AyhvPzS77whXcCI5MQHLUoC4piTpImqEQhKhgWIRbRisnkhOnsOfk4QVSFVjlKK7yUJKni8GgXpffQWjAzyBPPeC8jG2l2dnYQJVhTNVGO2wvSex8YVktFt9yv15snIlJHWA6RmqKR1qZx7ymp92qAjLqLf+E3En/ji+Aa/9Qzgd6O38j4X746MlIf2NNlBO1BN8YsxQ3sK2uhI4/i74JiWSHK7gIUbNertW48Ds/Ozjg/P+fw8JDJZIbSKUiFUhmJhqKqyNKUwlrmVYlKNEmWUlUl3jqcBy8G5Tym9JyfnVOVAYxDQn7ALEs4fj7BuTr5Kp7gaxBs772HL73/RYbjjOnsgjwbkuU5Z2fHHJ8eo1TC/v4uk+kFo+GIwhaMR7t4XUKd91Cny371fQh9ty/rb1f6eZ2k0FhoIvgVdi3L5W9Hsa3rTH8XjEAtzadOSWya8P8MGOyj75DUsAn4c9HrbjBYRM1pvQsLI5HliUBzL+7ySZKyt7fXMqhZRsdj+c45dnZ2OD09xVtDgsdXhnI+Zz6Zcnl6TjWf1SDgHOtsQPm1apyzHAZng2VcVRmms3kdbt1gTMXp2Snz+awJlY6AOA0mAafBK4q5ZTTcx1QKSDGFZ2/3NonKEZ+iJSeRQR1VKaQ2D5Z4dqEpWdHnm9R01yVRy556q9R0L1MabQOCbZziJvTaSAIvu4Pa37cu2y97C7YHbxWn9Z13Yp3r1Drtc3x3MrbrjOa4o9Go2cXbwUMioBXrS5IaIa8VHd7WO58Nu+NkMqEoiqX+iWasQKNBmE6nYXGJYG1tKgxYEzIXlc4xdRXOlGRphniHEMCvLEnQaUY1m+JLy8XZhKdPnuIJ3nJKK/b2djk/O8WUponErEgJGY0NooJ/wmw6R5FioiQxAyUpxazi+ecnwUS4OsFiePTJMelQ4eWAwc6wibrkOgsk9ne0eWiPbd84XZ0iq0AlwC8CeHQlu1jPNoZC646Lkbn1M/+e42K4sba+14YJvEy6KUPpE5yuW9a2TGfV7h/vddVN7efaBkFRNZhlWTCm8WDMcqBSEeHw8JAkSXj06FEtGSRLbYiMIJYfQ5UZYwmJfAziPK6qz+5qgK8MpmYQmdakolAIOzsjLsqSFM3lxYSvfe1rtQuvZTK9pLIz0iRBZQqdKhCw3iBa0NrjXMXx2eecnn9ONZshWYqbz/HKg/LoPCFJNfkgxdopyVBjy4KxHmLMCCH0ieno45t+bR0HrmgGWjjaOgZxZdxZSALRQasL+rYZQPv+NnYAy3UtyrjOe6vopnkH/kvgPwBi4Pu/6r3/v+p7vwT8ZUJQkf/Ee/9/v1ALXzeKBj49tA3SD4tdfH01C2mh7VoMBCedWuSNzy7rikRtAAAgAElEQVQma0vJXOv6uwFIoy1B18hnqW7AzOcY5yjLCusV3itm0xkKhUs9KkmwEnL+WWPwVYn4hOl0QlHMqIwn2Rkwnc5wzlKYkmE+4r333mU6mfDowycoUcFWIHM4N8PaKaiSqgrJS/R4iNiC/CBB5SlZIhwc7aMTxd7+Hrs7A3SmGY4zUEKqUyormMqGnAY949Ht/3WLfWtGUEsCEYBt+whsS1sznJdwBGjTNpLA/wj8t8D/1Ln+33jv/+tO434Q+Dngq8BbwN8Vke/37aRw16J+8SYqu1aF+lhnwtkOGtF/awNX7RHdl2/3797te1eYRFywnXLbu0db1dS+F91SF8lN6qNA/E0STHHv37/PeDzm6dOnVwxpmudak8vUGolBmiIqIU8HJNkQ76EqQ8RgrVJwlmIamBLOoiRBdHBOUkA5rxiMhiBBYphOp3z6+DFZmjaqMFGCsVNu39vhjbcecHBrxP7BHnmWk2VDjC1IkhB8VBQYW4KCy8tzJmcTKltw9vRznPPsjPfI8h1Gw/GVnTaSax3FNklu6+4vl7tsMNTXt32agxtRx1bhWkfeHtomstD/KyLvbVnezwJ/24eAox+JyDeAPwf8gxu3sBM6ehu+51HBp733Zlf32r511X9gUwf34QHt834sF5YjEC9Pn24hQcVmbQVS5wwUj/UGLYosSVAIzlqwDlMEq0FLm/GEmIBKKXCOJHEoZTFmDnViDpxHdHJFJI4TNdGesihCEtPZJdlgBN4hYhGb4o2nmBeYqqIoq9pMeM7ROMeWc1SimFtHMrVkyQC8J89TRoMxd+4ccfrsDOtLcClK4P2vfB9f+bF76NRQlY6qCowjEcHaElfr962rcNZyfPac559+xt7+PpPplNF4B7xjMFB4SjwJASNpL1BHiIhk8bU25epuutrwZ/XOe/W5xoOyPn4tSR+AeN/4mgQDoYVBUHxWiyw5bnUZwFILvO8JtL6ZXgQT+I9F5N8jRBL+K977E+A+IRlJpI/ra1dI2nkH3ujPO+Bb/+8t48VdfraiLtAI6wG/PuoDAZda335PoiQfgasQhKN5p8XH4i7jwx91JqE2nhB08+F8X2FtRZrkVFVtStgSd6NkERlC5VzQuVvDvKzwomrT12B/4FxQ64U8BBalQjaiqqzQAmVVkGqhKAvG2Ygovc3mMz7+5BOGw4wsD4CgeA3O422FSwyCIq39CipXgYSEJUmS4KsgD+7t7ZE62N3dDctZaawDrYMq0jULbNG9XjzNf21R/wZT6cpYd8qI49Dn4x/HPBoZdY92cb60w813y+7OxVUg9Sa6qYrwvwe+BPwoIdfAX4919jzbuyq897/ivf9J7/1P7h0c9dfi+9VoL1OT8J2gbdrdfsZ51wxejC0YRfh2Ge0AlaYK/v1tCaRhBi74Jezs7LKzs4cxIQZgHP7uEWbZ+Ggxkas65Vn0cSjreALhA94HG/57b94Ltvze1TEOTQhkohSj0Q67O8H23wNJqhHt8dZhigpTWTQK5UGLIk1ThsNhMFaqz9oiwe8hS4Mfg6kqHj36mCdPPuPs9JSyrKWGVt8u9XXPtRcd13Zp3UUdmUC0xYifJE2b612/j3i9++k+vwkc7B7z+uhGkoD3/kmrkv8B+D/rPz8GHrQefRv49CZ1bNGGlwKKvGrahoFdueIXHDzuzO1Ao30f530I4d2yh28zhMFgSJKkYSd3i3TmvoNHxHcl7voEJyNRGuuD+OxcSBbinUcpXevqyxp0HHA5uWQymYYkIN5irKUoSryE5KxFUVCWc4wp8T5EE8JbylmBMo5yWnBxNqWcW6azGc8vn3F5ecndu3c5OTlpQoqJCAOdcOfOHZIkYTgcIpLUthC+UfmuQupXYQYvg7plxuPBEiZQ9/0qCXKVi3AEH9sLPP6upWPmluDhTfMO3PPeP67//NeBf1J//zvA/yIif4MADH4f8DvblHkTzrxyED0rQcNNwOCqtqzVxW7R9i4TkFDoxvdWJaFoi4rxU7rl0NWxPmsdRTHn5Pg508m0Wbh4wbhlCaORAnTIW5hnORcX04WTlASGlKYhClCqNUVRNJO7rAI+MRgMmM4uSBJBbHBuUlqwZiFBJKkmuA8HpjO9nGKt5fNPH3N6eoFWGZ9+8jFkgrGWsqqojOHw8JA8yxiNx7iiDKHFsmyR1LSqyNJhI+e2N4wIsLb78zrM4KYSRLeOhvl2rq+aZ+3FHqWFLmPwzjXHwm656+imeQf+JRH5UcIm9i3gP6ob/sci8mvAnxDSk/2iv7Fm4OpCbi+chvP1/sg+jX+8tRoY3Lpd7QHqgH99g73RQu2KuBr+ViqIwxcXF01WIe9pROK48JRSTKZT0IuY/7FvtNaIh0ePPmU0HIdIvM6Dt8ENVy3E/bbYaI3FWWEwGHJ0dMTx6VnjfReeBe+jVWDVtL0sSv7JH/0RwzzHE8JqaxV8/DOd1FJESIA6m15ydOuA3f2CZxfHzGZzyjJEPUqzlGE+4of+uR9CEglMZTLhq1/+CpPJJJyTPZyeHHNycoJxLiRbTTLGuzu0nYS6O62xFlNVS8ZWL5Ouo21YnPfjkap/A4ptbAebvSJtKIXiKjbwwpKAv0begfr5XwZ+eVO5rzW1kaQtqCtqrvp71Xvd76EN4R9rLYNByPNXlEWwi6/FysgMgvWbw5mFrXn7o7Xm+PkJZ+oMEBIdvAK1TsCbOg3YQhIA0DpBK82DBw/46KNv14wsHAe0rhlJHbFIKWnakmdDSDS2MiHtuQvxEXRS5wd0geFkWcp8NiHEyfckacK8qCgry7vvvoupgn2Cc5aiLDk7O+Ozzz7j0ccf44HRcMhoNGJnFCIJWe+xzuNswFF83u3O1q7JMi4QF9SLHTH90pS5tsTwCmGuTW35p9Ji8LtBfeJ6G2TrTrC+5xvqzMPgJlzh7MLjbz6fM5/PF4u95VbaTl+utcaKYz6fkaU5eT7AGtccIbxXjeTRFkmTJKEyFT/+Yz/Gt771kNFoRFGUlJUhLqPAMOqApXU7Z7MZKktJswxRDlu5Jj5hkqR47zk9PeVQ7ZBmKUmWoBOF9TCZz/n8+DmlusAaF5iUeEZZxt7ODnvvv8/l5SWiFIPBgMePH/Ps6dOADYxGzIsSpRKO8vQqE2/1qWcBqrb7/kUkglDEGqb+XaJt2vE9xQTWCPkrnr5pRdd7t2/n36gNYD0G0SbnXIjk6xbOMTH6b/xuncN4u7SjxcCTCuFw/4g0TXn+/Lj+eSHoiFJ6SV22kCQgTTOmsxkiIVzYvAjaBxVVWM5jsU26rJBMI/yd6QTvCaHNFdCovTTGGM4vzkk06DpCkMdTVIa9g0MevHcL8UIxryiqGYkNZZ+fn/PNb34T7z1f+tKXKIsCCGbOw+GQfDAkTXOyLMNaR+CFS4JxM74LyaYlWr/QUXEFA9hSutg0414lEP5aMIE4CSN1f+yqs133/vYVrgYGV5W0qt64mJcAP+/BOepD3vWZCvUSFVVLEp4szZhOp029bbQ5SRISrTGlw9cx5hzh3O+dxxrHxeVlCAKaJcHiDx/SfHcmVywXBC2e6eSSO3du8+Tp57j62CGiw08S8C6kGos/O0nDLlyWFSEbTpAUnAu2DjoJQT61VZjKYGxgFs46fGmw1lOakNLc1FoKpYPqcTQacXBwwHQa4hsOBgNKU1HMC1AKU4Sw6h5PMk57RjOOlkJawTwED96B1OftxvS69aqs4w+y+q8asGta0GEQ7Sr6wMB4fRUD6J3715xzrwUT6NIq0bivM/qZRxzga9bL9htBU69fqGUicNmkwKo/Ut9rl73Uui738TGlVIKzoFVCVVXBTJeyqT/aD8SYed4FKyOlNc5aKmsRCWJ1ZQ1nF+dA7ekmDteSANrOLxAwgbIsKWYzdnd3SDU4LThXn67rNod3oxejxjtIVUpRFgwGecAqnEcbRaVB0irYEAhU1lJWgjEOjSbADB4RTVFWaFHY0iBpFgyKRLh9+zbz+ZzZbMZ8Puf5+RlFUbC7u4dWmkSHkFvBoCpENI54gDT/ecCCtyhxjXGW1FGW+taPxIf6ZwPSFiKaDroqHbavLZ5av5EtPd8CCVeaINdzbpM0Gum1ZAIL6p7rtuXFN6tpmzLWgXnde9tLKP0ySDybx4XaPcNGzEEphRKp4/3bnslm0K0oO+0F3z0GLN4LCTz+8A//kDQfUFZ2gQF4jxIVLAKTrIlfKCIkacqDtx/w8ccf14FEgsUjQt02XbclqhypF6FCdG0EoxRWwu9/+vlTLs7OefONN3jy5AlnZ2dkWcbdu3cp5vPGAGc0GgZTcb8qys7VzaNvLF8kDPmqurZ75SoY/SK4wnXm32vFBPrVI9+Zuq9TTZerr7p3jRL721QzgWfPnnFwcLBUX1vtKCLoJCFxjrK0TRyC9q7uk+WMTt77xgoxJghZgIUB6c4HOSpJODs7aySciBdEKSDLMsqyaMDJZUkt7l7NL6K24VnyoYhMQimF0ro+YmhSpUiTBG9dA3Lu7+8HdWOWUWUZWZowHI04OzvHuwpTuTorUba2t9sRiZckzI6IHsfhu0nXPQKv1Tr10GvFBK7Sdj9URK4ET1iHxN/EKKQPj7hJuave7VIU0eMCbfuotyWDRb4BgKv57qWREFzDVKJasWttFtuldYgUhATg8N5b9/nk8dOABSgPKsQNyLKMQT5YCnjivefy8nJxLPUhAGnIQqSpjEWXVe0MFCICBXG67g/n0fX5fjKfMcxz3rz3JsaY5iiQpinn5+dMJxNm1jAcDkNqNZ2SpTlZll7t39bijr+5L1LTOklgHW7Vxzw2lbFNHasYwLUwgg31vuZMoNMp656Rm7sTtXeBpX9fgNoLbFvm0G1H/Pvo6Kg5/7cXa9uO3zmP82pJQogLv81E0jRtpID2ESN+j8YziU5QWnF6es5gtAPUWIMLwKCq1ZC21lxoPW8Q9/Pz83r3b5Zd02ZnwVqP6Fb6dYJnn7cOW1UIcPz8OafPjhnnKeeXlw0Y+OzZM+7cuYO1lv2DAwa1leRoFFyHh/loqQ+Xvi8dd7oRgNePY3zvumO6aePY9E4XtL1OXdvW+dozgTZdR8y+ybPXxQS617og0Iuc6eLki+HF2inAYl1lWTZMwHuPlxRgyW/de4+vJYYYe6BvF4z1xaClOqkXufc8efp5QP1F1aBl0oBt3i9SjBsTtBG+lRG4u/C8o1Evxtui6jYQTJzxntPjY549/Zz5KEe0Znd3l+FwSFmWHBwcNNhGhmc+n6O1piqD9aKIMMiH63fMLRhAt3/a5fUeXbcq7fq0zXxaJTW0y1hF39NMYFuRaB0HvSJprClzFQ7Qvr/umW3b1DbagaAHn81mS7t1t/zg7GOb99rPxPN6lBzaloTdwKPxXQFEKVKdBHWfTghJjH1TXvu9aBBklxjiElAeJBJfL3zt0dqjtKATVWc0EryzeOe4e/cu++NdsFWI4lv/nt3d3WYHr6qKqpY2qqoKWpAyOCklSUZSSz9xTJfQCu+XAM1V1B7P7nFsGyn1RWjd2X7VseEmGNVrzgReLSCz1MlbPruJ224rAVzFLJb1E101UFWFoB20dqQ8z5elEGjSg0EwxCFKFLWdf1ywae3G2o2LB4vEplZChqIiuiijiRlxYtwCZ6N0ErwYITAtF48uAkpiHR4hvOOdB03t+aiCWivotXj+/BmmqhgOhmAUpXNNyjSlFLPZjOl0ys7ODrfuhqPB6ekpF+cXeC8hfmEr4Gfv+b312Va0dy4kUwHIB4OaGW5BLwgs9s29dRLJujL66LVhAr4GiNpLoQv2rS9gNTDT7gDVUsW0h2advnYVA4g787YLf5WEIhEeb7VFEdJ/ex+AsvNaNYarY++phEE+QLwgPhi/BKMXag/AGvzyQcfdnvTt+ISRKbSZjql9/zUwNQZnLbZWD8ayHBYluhWgQ6FEIdrjlMYnKdYatEjIRVC7LyeJJkk0WrnmKJBkEmaiJMynHlspnAglHq8SxsOUp0+esLO7y2w2a9o4nU45tDC/nLI/3uPk8xNu3boVpJwGXrm6m0bpoNFQrJPKwgvN38V8TlVV5FmGtEOMd+bf0lne99uKdN+5jji/Skro+75pfr4mTMATbNyWAZytGcC1qurxvtqSq7bFrq4Idt3zf5sBdEVLTcwzF5iArSq+/rWv8eUvfzkwgRqd1xLcgV1Vn7FVkLVVkqB0UqcDr1OAt+xKnHOUZVm7BKdXkpg2sQsBqXd1VWsggibG10wh5hrQ4b4IXsCmte+Cywj2AEEVqBNNmsZgGMFYx3uHTgRJwRphOjHs7hyS7QilM5SlZ6xh8tFHiFKcn583i7csS7Qodnd20Tphd2dMltaBR5ocfqupDxjssoPu36PhkCpJlhZ0v5VHqwxfq0r8sr//KgbQnQ/d+XUd6WUbek2YwPeWHvZlURt5XvU9SRKMtc1xIEpKy7tafWzwHqkZh4daFK+di/SyujGCg1XtUhvNjyMm4JzDKWGQDRpmUWN24dwvCSi9sMhTBi8gqGC1JwpvK5SAd4LU0e88IUyYEYNOQnBSCNKI9Z75fEZVlaQ2RXwwH54XMx48eMAHH3zAaDRif3+fJEko5nMsjsl0wnQ6JR3kGO8QrTDOomuGGcezYfb139toB9pz03tPmqZNEthtF+M2M2kTI4n1wXVU0duU+towge8O9SK8K0CWl8F5N6l7+hhBVOt99atfXYqoE8T9bpvDAlM1doBSSA3YpZI0O33UMHQR72g7oGtGkojHmBArIEYicj6cgx1ZABW9gkThXImvgtSRZSmJVkwn56AjA/A46yhLE5yGpEKUQwkoHfwkvBem0xmVqQAddltvydIULcKbb77Z5EeYz+d473n2/HkdrdgG8NCFoCV5nkMdk7CPtmcCiwNqxBk2IfGviq4tAWzHA26cd+B/Bb5cP3IAnHrvf1RE3gO+Bvxpfe8feu9/YftWvz60aZBf5AjQ/rvLGNq6++gSnCQJDx484Pnz50vBP5yzV953Pojq4h1aabRWIfW3vxpnLk6qeD2i5VEDkWCx3tfIvCAqeASKUhgXLPgEDU6TJMFtGATnKoyXWgqweGcDKCCBUQkaceH4pyTEJxCl8AhFUeJMCFxqqoJiXnExn3FxHgKr5HneMKo0TXGJxlSGyXSCJzAtW0s12r04iNvGqNpRmV+mOB7rWXu/o6XYrtDt5ueN8g547//t+F1E/jpw1nr+m977H92q9kWBa9Uh16Uu6ruExNf1baI+bt+VELYBBbfZNa5qChaAXVyYbVHd+2C7f3FxwWg04qyMxjmL+pxzKOdAa2hJDG17gEjtPASL8NhBBYezZPkgQBESd2xX4wYGVWcsBhBVg67OYupF7q2pcQnQiaCTOouuFqT2usnzvI4doKiqisuLS0p7htIwHo7xScK9e/c4OzvDWstsNmtMqe+/9y6PPv4YvOfy8oJhHWxkNBpSmau+Fk0/s8wItlUj9z17HVC4K0lsCwZ2mc91319HL5R3QEKL/i3gL25V20umbXbr63LsTUeALhi4bUdvakff/e4ZfmkiSFi8C+agsc40TM67FvIskOjgaNNmANGAqK3/jvU653A4BME6EzyjrWDdAlXHJQiKPB+Bq8CHRKReHOLBWxM0DeFkwmA4ZHd/zHw+Q7RCJ4ZUJeS5QqvggWgqS5akDLKELFOcnpxQFBWHh4fM53NOTk4aRqCU4i1TsjvM8cMBp85y62AP7+Hi7ITB+PbS7+pbvH2mw6vG6jpzaROw131mXTl9QOE29bZpXdtfFBP4KeCJ9/6D1rUviMjvA+fAf+G9/60XrOO7Ts3CugED2IQDNHWs0Fq0jX7au7dIiLv/8OGjhVivBPE1GBixgCQh0QmZTpvzcZNXoKoa78F2NqOyDO7KKglotqkqnA+7vJIgtostcVicCwkyrKlTk5vaglApIGgnUOC9QithvDMiTTXz6hytXR1KPIQ68w6qomQwGHD87BGHhzvYas54tMvHH3/M8fExEKSVnZ0dAC5OTrh1eBSYmTE8++wJz549Y2dnh3x0a2XfRgbQNsV+FeftVXPkutLutlLLTehFmcC/A/yt1t+PgXe8989F5CeA/11Evuq9P+++KEvJR+5tUdVyDLdXQSulgDVcfNtB2YoBtA+gXMUMll1kheFwxGw2WxwdTOt2PWGsC0lGxC0mUvTIawOD3vtm8QcJI0VpS5qGWAaxXd57rPck3uKNxTsojMVaEC8o73A+BB0RogEQ4BzT6SXHJ5qd0YhEa5R24R2l0EmIAWCLEmcMo9GI09NjFKpOtqp44403wuLO8+Z8novns08/4ZNPPuHJZ5+hdUKeZyRKlgyr+qjtSXidsdxE2+7U16mv78i4zb3u/T66MRMQkQT4N4CfaDWgAIr6+z8SkW8C30/IUrRE3vtfAX4F4Itf/qpvXe88GCf+kglRfWm9LfdNqW+XX9fRfaKa1LtxffHqgEvYWQOUVj9Wf4ln7GCPb5Zz2PkQprupQ4SQqMeHDD742hPOY2tbfiMKoy2ps+H8nYQgoqgFZuKcC3YFgE4TsixHq4osz0EJVWVA1Ts7Du8TnDd1+BaHl9pCr/7J1hqsNyAOL+DEU5QVyeSS8TAn/JwkJCQdWMgqvAYnGaVTqEHKk0+fk+sxu+OKN46OuH/vTaaTC0xV8q2Pvs23v/URppwwmc4xzpOPdphO5lg75t13v4hWgm5LYn5htENr3rTHrL3brlo83vvGbHoVdY9Y24r0fXOvfW0TJrEKX1pHLyIJ/MvA1733H7cacAc49t5bEfkiIe/Ah9sWeKWpUdm9dGH571Xc9MpOvuVu/SLMZN15LCwWehlBfCtumm3xv18SUPVPWmgTGici7xClaiDe1+X7Jo+fqtOYh9BkSYM36Ni+2tIwzYIRUWWCfYLSqrmPC5GPQj4/QEL5zlvwIXah84FZ6KQOV1anEVMIeEeiNEmaIF6T5ILSsRc0qU64c+c2d45+gnLqMZfnPP7kY/7k93+bs+fPmJ4fU5ZzfKLxokPwVCvMZ3PevP+A9957n8NbtzkrTNOvfWMSx2zTol811m1m0ld23zubnllVznWOApskgy7dKO+A9/5XCdmH/1bn8T8P/DURMYTU5L/gvT/e2IqtqY3y18YxWyzcLut4VdRuSxuJ33QuvPIvVwcv4gNdZLmJZkwdXERqUb8FIobYAEF9OJ/PsdaSZVnDDOIEi+nK43taKwaDHU7rICVA87xKFCFpajymRZ17bb5MTI4iJGmND2jFcDTk1u1beAxnZ+ch5ZoKtofaOrR1yKzga7/7j3n48ANOHj/DVDOsqULGIgkqylRpzHyKzw8YpDkP3nmHt+4/4M6bb3F2fsknj58w3D9YgKc9fd8OvPIq6TtRR5uuAzzCzfMO4L3/93uu/Trw61vV3Fvo9V+IO+KrplVg4CopZBMg2AcyNvr6zqTpO8d326OVRqcK6xe67Mj8tFJ1MtHgABM1DjG/XVz4MXNQaL9CKbMUY6D924MNQ1jwomLY8YXRUigjtiI4CiU6YX9vn4ODA4pqxunpKaBD7AJRiLUoY6Eq+dYHf8qTTz9C2QzrJ+GYoQHngx3BcMA777zLG+/8AG+9fR+tUz598jmn55d86+GnSKJ5e29/IxazLcD7IhQZzk3r6c4V2E7a2Ja+dy0GPc3ut4leBotYN1m6uETbPmGTJNB7TuxMzmVxdVFetPkPtvLhb2sWWYKAxgU3ZiaOCzomFI3ti2UtGJLC2pLhcEDMcxBzIqZpWv8+XVv9acSBk6rxEGyGRUJmIK01WZZibMmjj7+NdRXeB7dhpUJkYFMbOSWDDExJNZ8Bc8CjByNu3bnL2+9+gTffepu9/SOGgyFWUsqywivF5azA6QyD597tO0tjsarvvxNMoKd2bjorXxZ42abXhgm0B6Id7WYD/LL07qqzUFTxQZ2errVT902AVdc2Ia/rdv++893KCdg55sR3wyJ1SxmIInJeVRXGmtqGoLY6jIu2FvvjIo9licjCY7Aus6pCNOCQvHTWOOxAMCve2dnh4uIC0YB17B/s46xnPpvXLsgqOBFZy3AUgpCmScJoZ4QzITHpvDR1LgIfIiR7S+U9ajTEpp5zU5Hu7/PWD3yFd+5/kTtvvcPB0RFpOqQ0ltJB5TwGRaYcXicY6yis5Y3dfayHN9+8x2R62TCtKE3F/o9MNYZGi33zokh733ttt+Z6eIk5D1alHe+WE6+tS0N2U2b22jCBSFv/EGEjQrtcMEvMdxVHvU5Htnf89rvrytim/HUD3j5qtHfyvjokfvfLIGMEE2MOQe+De3FkFMEAKYQ1K4qC+XzOs2fPuHv3LtZadnd3sYQApqPRKCQJKQpUUocmI2Vnb8zz589w3tXXYTDKQq4BY4JpswgiMfaAxUlwk/ZJzr/wr/yrDDJhmO5QOE1RGCZVhUVjCFmYPYKZXaCUJh8MeOfBA3Z2RmR5wvPnTxjv7F3p03YfRUbaDdr6KjRO3bFZRavqXqUd2Katr0xF+LrRRnYQ9dywNaB4U1q1w28L2LQdVaJBTzv0ePw3JiqFeqDrI1JL3xp2O2cRp5vyYxntd8uybKQK54K08fjxZ2RZyo/8yI8wm8348MMPGw86J8Igz0mSLAQWca28s3V4sdF4RFkWVCbkFEx0jq0Tq7o6W5IQYg56XJDSPJjKkA8OKas53glTU+G8xyG1WtgjKoREHwwHmMrgvGN/b4dnz57V3/cwG/C4LhPojtNmejGxXCTqg64u5E3S6HU1GeuoL0D79yRtO2zrxPCXeU5cdd5fd6xo9P4t8bSd9huWd/TxeNyE2+r6McRU4vGeMaaZ8G1HoVim976xFpxOpyF0V1UxHA55+vQps9mMNE0ZDkPsvmw4QOUZToEkKvgJKnAC1hguLs5D1KBE8+Uvfz9/8S/+paZM23gmBj8EwTPQCUOE1B/bEasAACAASURBVHrcrIJKMUz3qGZBpZhqSJVFS0UmJbkUDGXe9Onzp0949Ogh1pbgDKaaN8FQV41lu1/iGHTnwPp54Dvffeuapzsr+0DgNgPYZm6ub0P/O5t+x2sjCfSfjWnva1epwwz7zlDdcmXF8y9C24r4mzi9tJ6N7Tct9Vy4R53ayzEejwIeYKoQd6B2s434B943tggLxH75CCMiTW5BWzMGYwxJknDr9i3OLy5CctH6/GydDbYGabjmvAsGP0oIe4rCmTIENzWKPEvJ0oRBnjGbTanKAkfwGYiGO6IVWSIkBKnAFBW2KIOxj8pAleAtSi32TeMNZTHjyfMZ08sL7ty6xZtv3GU6veSTTz7lYP8LeKVqnGRptGgvvC7zvILldAepPW5N39LYSyxq2Q78Wycxboc/NLXfmF4bJtCmlyGqr3pfeDnnqE11xR095qG7IgnUH1kU0gCWtg4iElH5nZ2dxQIXh3M26NdF8ASTjPm8ROmsqVuzWOD4ENdffHAIUkohPthZeOuwNdhorUF5hRaYXl5Q2pTBcIgDzs9DIlPlFKUpyc0oSCvWUZUFWaopS4v3Bi0G7zyuslRW8fG3v8Wjb32ErQpELBoJ79lgppykGpc4Cu8oXULlIB1rjMyRJMGaitF4SFUZzi4mPHz4kLOzM+6//TbDLGX/jTeYTCbM53NOT08ZDkZcXhaMD8fh2KHAuZCFKY6Us8EOohu0dWnUt2EIzTMtR6SWNOC5uvuvkwbXbRTXxSy6xmer6LVkArA4477SOuiv4qYMYFNnL2ECbQbQ835kBhcXF+zt7S0Fx2hEfucYDAbB9z8VPKoxOe62pR1luD2Z2uJiPIJErYM3Dmctx8+eY32dQ9B6tCjKokAErLFUZdi1lQSwMlVgnQ/ehx7MNAKQrllJS0cRFwKOKKURa5jN5lTGkg4SziYTnp98xtn5GUmSMBwOuXfvHl/5yleojGF2dsr5+Tlt9H88HjMaj/Bukcp9uZ+vLuimv+QaloM3UNV1caFtrPu6DKT73nXq7aPXlgm8CK3isi+l7HBGWVnf0k7fvdbzbF8b28/OZjMuLy8ZDofNhG4v3MFgUBv8OIylmd1d1VM887cNjtr32mrAPM8pioJ8lDOdTms1o2rwhRC5uGoYRlmVzXfrHEqW1XEugoatIYhMKEmSYDGoQ2RjZRVlUfHhN79BYebk6hZHd/a4//b9pd89nwc8IEnTxiX64OCAw8NDrLVMZzN2DkKegjaDaxoiy8eBm9Dy2f567/V9X8cQ+vGEDfW03ltntfhaMIG2yLK17lOWF9q16rvme0vP+xXX6ZwxWQb72pNtlSTQLjMOtjGG09NTjo6OliLjdgc3gFu1996GSRLvt8uL5SRJwuHhIc+fP2c2mbCzO2aQZcxmE7CeqijCotYLKaIJNyrCIMtI1HIshEXqs5B+rNuOwAxUiIMoGuc8999+l529AfNLRZoL8/msaW9RFJja07Ao5oxGI6qqYnd3l+fPn1OWJXv7e5yenTHI8948Dd28CU2/048bvehiX3XvZaL8N6XXggl0qZnozf96qB6tpjPDi1fKWPHa9m3onuVXNafD3ded/6QFKK2rP0bUnUwmDTofF35kLtGtNkkSysqt3E2ktTNHsLEdqiw+a4zh/Hzh+a1bCHs0LFJKKIt5x8JQAMdwOCDRIS5i1AbEMoqCBbax1EaFThNU7bw0mxU4E+IS5nlG5ebNby/Lsgn2KSIc7O+jlGI+n/Phhx/y7rvvUpYlH330EaODI4aDwZUxiZOqm4590wa07YJt92e7jCUjuDW410pQe0usrK+d/Zma63sbS/wOU5czv4xylspcVW6PiL+uHX33Vol5vW25UuLywLUX6Hw+ZzabXX1DpHYESumDUNo7bXtSdh1num2LKrPxaMz3fel9sK4OLSZYY9jf2w/BQpXgrMMZi6mqkPRDAuAWRfA0TVFKSNPg598GtqL9g1aKLE1rdF1wxuEdWOtQOvRMBEqj+tRay9nZGR984xs8efIEpRTvvfceT5484YMPPgjZkExIS7aJeX+nHHw2sZB1c05az2yi666h11ISWG78yxXDVoI5a6pZ16ndxdQV+7eVJMBTx+xuNTUg+ZPJhJOTE8bjcVNW+36aZsxmRZPpZ/nnSi9K3G5Pd+eJxkLOmpBkQ4QsTRGpF6v3ZFlSi/uL1GaDwYCoqRARhsMhaZozn88bx6V2bIRYT5pl5LmrsxopinnZHGtm8xnU2gtjDJd1ctKTkxOMtewPB9y+HcKI/dZv/RZJkvD222+T5TmDnb1GCunrl74x2462lSevvrX2/ksQ929SxmvJBBp6mWegG4xbdxG3/+1e6y7yKxJI53pvUzoX2+j98fExd+/e7S0rTvS+I4iIBFPcngUfjxVtqaMtPYyGIy4uLmrwbpGpaDadNs2Nzyc6TKWyKLEuuO+2YxnGukK9nhisNNalExViGeApSwM+ZCuqxHF2fs7p6Wlj1Xh0dMTRUQgp9vu/89ucnZ3xxS9+sWZCcH5+zjvvvourna2WgrLUE6FPO9IzBCvo5YDM16E4fV8WwN2m14YJ9HOwBr65Kupet4LWC+u4pSBXCu8u9u65+wq41F34bN4FetsiQsz6O5lMKIpyqT1xUQaHnxoTaOryeF/nC/DLHRAnf6M2BFRLBSlAmmUo73n37bcxZcnJ6bPGMGl3b5+Ts9M6C1JIgJYlCdZYbGXwKuAHpg5LVpZFKFUE72o7B+fqrEaOqkbwVR2t2DnPxfk5J9PPMPMQjfjW0RH5IMc530gF1oacBGmWUZUl77//PjpJqIoCaypUnuA9dZ1BBRkYAEtHsnhMbMZpzRHw6hi1H7jyZSX1bSrbvhO/b2II20qhGzEBEXkgIv+PiHxNRP5YRP7T+vqRiPyGiHxQ/3vYeueXROQbIvKnIvLTm+pY8zNALIgjxChZfDz2ykJb+RtogTGbqqz7te+8Hz9t8bGrsltqk3OIcyjvUT4Y7CgCiq5aO297Bw5NWCT29Disq5gXEy4uj5sdrV3/aDTCewe+Agz4Eu9K8BXiTchBIGHBivfggp1+bI/UbYofvOftN+9h/Jw//eCPmRXnvPHmHSbTS1BCYStGO2OceJx4kjyltBWzao7xFsGSpYrbtw94843bCA7vKkw5w9o5+BIlFhGDYPCuQKvgkCQOqmKGFse924c8eOsu+fySPQ3PPvsEpTxVHdFIRJOlCRenp8ymU/Z3dxmkKQIkopicnVEWc6yxtTQUbCk8CV6k9kcA41yYVT44JsXcDdbVqcwkhklxcOUT7gTrx1rC84DzzWcV5nBd0b0Pz2nTTaWEbYBBA/wV7/0PAP888Isi8oPAfw78Pe/99wF/r/6b+t7PAV8Ffgb470Sk/2B2Ddrm571MQLHve/e5PgbQ6NLrj+2x699E4fnwPe5azjnOzy+as3Ib7GsfB0I9QCNDrf+dbb+DeDQIKcRD2PD7b93nJ37iJ/npn/4ZDg4OSJIQePTevXtMp1OsCRGKq6oKIGEt5u/u7vLee1/g8nLSmbjCYjRDMBJjbG1ZZ/E4nPOkSc7Dh484PTvjH/z9/4/pdMrpySnW+RAa0XtGwyHvv/99HB0dcXBwwPn5OdPplDzPefjoESenp6GPVmhjrkh4rWtdxryKlsd//cJetVnchPrKuGn5G5mA9/6x9/4f198vCBmG7gM/C/zN+rG/Cfxr9fefBf62977w3n8EfAP4c1u36AbU/fE37eBV5fSd/fskgz5G0JUctqVwlI+pxsLijI49XSkkGgC1r237GyO1fRRCqu8zcI6/8FM/xWgw4Hd/53eYXF5ibQhWGtWIZVk2DkkhiWrCYDBkd3eX+/fvc/v27aWoSMu/MUpn4SjgCMzPW1+L+47zs3P2bt+mNIbPHn8agpAQwqmfnZwiEo4Lx8fHHB4eMplM+LM/+7OGEaU1kNlO2Q7LY3vVovB6CPym+ed7nt+2nhdpw7Zr4VqYgIi8B/wY8NvAG977x3VjHovI3fqx+8A/bL32cX3theglQoTLhW5g9r1ifo+k0McIYPsdpU1SHxeUCkk54gSeTqcU8zn5IG92f601eZ43YcKiHn5rq7JWW6NeP01T5vMZb966zdHBAb/xZx/w+OlTLicTkizj+OSEu3fuNGVEl+SIUTjnOD4+5nd/93e5uLhosId2RqX4nEjIl6A0xCzF1jq0Sjk4OODRw8foJGAAX/nqDwGek9MTLs8vsKVhlAfjJlVnLH748CE7OzscHR0x3ttDqRAsJSRaX/7dfcBgvH7Tsevt4550aC/CANrSyssoc2s7ARHZIcQP/M98Tx6B9qM91660TkT+QxH5PRH5vYvTk9VcdAtudq2BanNJtuOUfW1ZxW03Xd/0O4IxTrCeC6j8IgHJfD5nXsyvlBPR73X90Ii8PROn+7u01syLAgWcPj9mb3e30QiUZYmq039HlZ/3vnF6imHLostykzOwlozaEksjLbkQbFRUDc05j7eePB3w7oN3+PIP/iDZYMDOzg6ffPIp52dnfPbZZ+yNd8nznG9961s8f/6cJEkYj8fcvXuXw8PD+mwfozAv9XQvuNsdiyv941ePY9+4d5lJV/tyU2qX8zKkiq0kARFJCQzgf/be/2/15Scicq+WAu4BT+vrHwMPWq+/DXzaLdO38g584ft/8IU3+rULIFS4ePZqW1a/u07M23BMuI5IFgc2ONSEa0qpK1qN6XTKeDxuROz2b9daX9HDh/uLmH+xnq6VXPvvqqoQpfj8s8+YnJ+jgfPzM0QFByVXt6P9XntnDceJ0+aZtr9+e/I2dXsfTI01gNQOeUKSpBSFwVhLMZmwe+uItx88QLzw+NEnfPbJJ1hCSPT9/X0ODw957733GomoKEpEa/J0wDpZsgu2dTGXpv9ZodrdkmKZ12UAsR19Vn+rmHtf3atoG+2AAL8KfM17/zdat/4O8PP1958H/o/W9Z8TkVxEvkDIPfA7m+ppVbj1o6+S1u36faL/Vme9db+tpw5YthxM0xBUs216G+va29u7YrgEqzGCPlE3TqaYgWhyfsG777zNl774JRKpA5Q6R2WCEVEDftaLvNtPVRXaGsttL6zuTow4RAc1oiQZlXHBVDpL0Voxr8omOrII7IxGeO+b3V9rzfn5ecNILycTjo+PcdaFGAg9hlTt+lcd+V4H6pVKXiJtIwn8i8C/C/yRiPxBfe2vAv8V8Gsi8peBh8C/WTf0j0Xk14A/IWgWftF7b68Wu4q2OKhfg3qlgO4EXPf+iuNJHzOAzcDcJgriMcTsSjHun4gsGeB0d4Xd3V1OTk6uqhtbatGuKNrdQdplFsWc3DnGwxAm3PuA4lfe4UQ4PDzk9Oxs6TggNQofQoeplUE0r4jitZpNxWO7dWiVMJlMGY/GfP3rXycbjbn34EEtlntuHR6yMxhjVTAfLsuywSacczx98oR0OCIf5FtZgzYaklbkplVn7+8WvQoGANvlHfj7rO7Gv7TinV8GfvkF2hXLudF70vneLWVbjr9J3I/3VpkKXynf+5XxC5aYVd3oEEo8ZBtSKiFJUtIsXdJdx0jDVe3cEyMMxWNBWDQO7y1BU7s4Hy/mdr1TR8caEapyjlhPmggPP/w6qk40Yr1HaReyD7eOHW3FHwSthtYJw8GQy8lliw93jJfq617AS0jd5p1QlhVoOD09ZTabkY/GiPdkScq8MmSDAVYArRjXDHBfay4nE7xzJGnK7Vu3yGtz5+DIlNaMqta+xK52IcBK9I+IzKxpctN4wcvm+dKMaSPGy5Vrm95f98y6I8CVErYo87VzIHpZUoC0Pqr1WaIbYAHbnv+vw7V9hzlExNwYE1cHo+GYnfEuO7u7KK3raLuAUiH3oAiuFThk2UPQ4awBb0IuQW+hju2npPb/F4+IC3+r8LdXGq0Utw+GDDJV5xsUvKl44427wZ+AYHRE/RHAWcALg3zI0dEttEpQElKPCwoRBV5q7KM2sxEBpVC11FOWBXfv3sZZw5tv3kN5uDg749nTp5wcH1M4ixFBEs3Bndt4EU5OTzm/uCDPc96+f59BlqMQvLVhUbsQWak9NxYWCzQamRiYZZmxRVIrPsvzo4sxtP/tnQNbzZTlOpq50pasWp+uWdMqem3MhhtasVt+Z5uwWh24bqH3Pbt9pVyZcXFwB4MBw+EwJBOtE39475tkIA04Bw0juFq3b6Hz0pICZElsj+Vaa0EpTs4uef/9L9Xv6rCDephMpkvvdCem9yFIalEUza61aFNgTA1WUIs+ogARlE4b8+CjoyNEYIzgnSfLE7ROGO+maJUguo6DoDWVMQyHw6U2VGUJKjgpISuC1HfE/puK3asW+UasaAt6lXjFa8cEuj/wu3Ue61vs6wDBm0gAnRppc4E2mBajCud5TlUj321DpBh3IE1TptNpr+dcfLZ7To9SQ6S2luDtd9/l4uKSN24Hoxs3N0Fc9vDw4beDFqGD+LcBzclkslR/u/xYR/gQMJBaGaJ0QlU6yqJif2+PNE1I04xsMMRaD6KorMXZ0GfWWvb39wNwWhT4WnV5OZlhrWPv4CBaX9UIf48YHcVrH8yGr02ybJW4jiG8LhhDpNfwOPB60SpJYBUD6L63NbXmRZNCrAYDh8Mhw+GQ8WjEaDQiq5F5WPjkxyAe6yZf24qxfa5sf6IUkCQJ09kMj2c4HJDlWThrS7DWiyrK9r9thtJWU0bbh7g7d20aREJyElE0Z/aqrDBVSFLivSfPctK0Bkb9AjSNv2M0Gjchx7TWTCYTLi8vabI0t5Z+t4uWJJjrjdrS8HVtAdrlv+jufSPpckt6bSSBV/HjXlY9q4DAPgawqvxN9QZY7uozSilGoxF5nod0YrAUrSdOuDzPqapqKXlIF7SMi7D9d/vf9i6llOL0/IzCGkbjUVi4HgZ5Tjmb8MM//MP85m/+ZuPBGC0B479AExy1bwJ3F4t1FSI1o7Ke+azg8eMJSQI7uzuURcXBrVuI6KWyiqJgMpngKsPF+Tm7u7scf/45ZVmyu3fArVu3MG4R4NR7j8M3AGCbgTX9smKMupqmdt/1Q9DLz7RVqU2ZW87HXhCwxcivW16b/pkkQL/aqv2927GrJnW3zOtQ38SIkzTLsrDbJ0kzadsTN57j2/WuY0qrpJf2uzGH4XA4RNU5EGNkoVQpfvzHf5y9vb2mbbFNsZzuTi2dRdd+zntA6ihCIgiKy4spB/sHTKZTPvn0Uz5/+pRgUmxrM+KKRw8f8exZcHHe2dkhSRIuLy6YTqeICLu7u8HsWuvGdFdYlnwiNQZDPYu8b3d/GXSdBdtuxzoJtOfFje1/bSSB7yatAvfaO37XGei6otnqfeJqO9plp/9/e+cSI8dx3vHf19UzvbMvcp/USpFs0iAcyDIsy7FNx4GUU2wRMpQYPvjmQ4BcEiA55KDAF18TJL4asGEDfgT2xQlsIEbiRwTkEDjiypRIySRXJJemRJHLXS653J3Z6Znprhyqa7a6t2d2l0u6Z7H9XzS2px/V/+rq+tdXX31dXal0F79SIe7O82dEoNPpdM3wbH8/awVkr+X2091Ka3/HWvO/v/410qkTBEOgm+b7BbEmbLW6ld+GD2f9C9kW1t3nvkOQSA/J6/5oDZubTUZGxpiKp2i1QmamZ1FKsbJyl3q9QQQcPXoUUZogCKhVA1aWl2k0GoyNjTE9PY3yq4StkKA2THcY1IZle+lJYLvTl/WYiSivDHcrDA/byN1mAexToA61CPQz3fst7jGPgofrPHOH+izyfrufJ3P5uZOSuvuyLYpNo1thRag3GiwsLNBav8Ozzz7L1fdepV6vM1o1w23W/LejFO6Dme2CuNfNg8jWm34iirDZxPd9ZmdnWVszIch31+8zXBtlcmoKz/cRFJ04NBOqJKJUqVSYm5tDa81Gvc7c3OOs1+sM1Wog0vVniJduWa0I0EcE3NGF7fnQexvn2we2+XT2md6hFoE85PXx85yBe073AThAerZfU+gmte4zqM34vOdJN67fPX4318paP5av53k0wxZhO2J2bDzxRfiA5vr1d83sQZ2o26qbZathMutm3kBXkPLujYjgV3yUioiAdrvD0q3bDI/61GpDDA+P4FerNMM2sQZPKdqtTtcaGqpUmZiYMHMeiLC8ssL01EzydaQq7XabauBjJjhKHJGOYNkp0PohG22ayksfDRDR+wh/6ZWqm+b+1GdgfAI9QzC0frAlQV4rbpHXctr17Ln2t+th3w12sip2WiqVSqqlV0pQnkZ5gI6QZNYlT4xb0Zro7lBfNh/ZIT33JSDXUTakKoSh8PTHTrGycpfhQAExoQSmgtZGaIVtfL+CJz5ojzjSxBHUhoYZGR7FEx8dY75c3IlTw5tb9ygm6pjpxf0qdKIWm/WImcnHmZ6eZWJ8kjOvzXNn+Q5BtUpQrdBptxDR1KoBVeWbiMGjR7m/vs699XWmZ2cJPB9fPIji7kSpiJDMF5Q/70OP56PbJyc/iMhkxw1Nc0LVPI1n35IUJ3xHtLPEmX1mMW7M9JKMdibikt6XrT9uIFcvDIwIdE3WjCMjG921m2Wv13WRJwD9hCSLvRzbLw2XX2oIT9K57GX293L45YU4u2m4glCtVFhfr3Pqk09z/fq7tFohSvl4qsLt20vU6w2GhoZot9oprr7vEwRDTExMMDycfLNQk+KXvj7GVFcKPPB9BZ0O9Y06ly5eImyGjNSGuXXrlvmiUByjfN98OzEJlQ7DkMtXrjA2Ps7Y+Dh0fRXC6uodfOV3/QDG79C/nN17l52INV8QbBCWzaPzO1MO9iRxlq0LbhVvT47JX/d40uen6hI714uBEIFspX+oae/j3KwFsBsB6E3EZZKxSPqkk/fw2WPclj2ONb7yuy/S7OTvcH/buQHc2AMR870DpTz++evf5Nq1awTVgDiOCMMmnU7E6OhocozpsljHX6vVYm1tjeXl5VQXwJr9lrOXzJXg+yY8WSmFIERRjPY8hmrD1Go1rl69wrXFRWpDNWrJx1aqSjEyMsL9e/dYuHQJtGbiyBEUoDyPingEQZXFxUWU8uhE7UREt78glHfPbfyDvRd7HR3YEgpJuh87nd87viNvW7ccH4IfYiBEwOJRDMPsBXmtQdYfsNM5Pa2A1O+M9ZGTJmTEMWnB8o4DTOVshd3KnL1+1qeR5elaALblm5yaQinFvbW1ZNJT40ALgiGWlpa4efMmQRBQr9dT98vyjqKIZrO5dQ+TKD8dkyyCeTfCmM+esn11kChCiTA+Pk6kOxx7bIYPPvUEWkdUPOH++j3efGOezY37PH5slhvv/o4Lb51js7FBVQlRO2RxcZHV1VVqQzXAjAzYlrKX0NpRlqwAPPCz6bT0e0kj7xnME/C+FucuLdGBEYG8G7QfUdgynbZv2+35bp9xN+jHd/fDSWnPfSV5V8Ds3Gq53Vd4rQ/AFQDLfy/XtsNlvu+jfJ/mZpNnnvkop188zfLyMtVKFaUUYSvsmv3NZtN8wThzX9vtNq1Wi2az6QwhGtN9q3Klh7t8v0KlUgUELR6x1owfOcLJkyd54YUX8JTi6uXLLCws0NjYIGy1ubOywn/+7D/YrNf50IkTNDY2qAUB77yzwMULF5mZmSEMQ9DGQjD3ZUv4XD8I0K387jb32L13EXW3i+uWxfbz+/uuenVb+5WlO2LU7/iBGx3IG8qy6w+cJn18rDk3fS/9+l58866TrJFt0vuZp7ay90vXfcB2Eqxe3QGXi5ltWNPRMcFQwIf/8AQvvfQSP/uvn+MHI7SiGHLm7MuKTvaLQyYvxjtvon8tdyMIJvpQ4StFHLaxc4Our93j5o338CsVpqYnOToxwdLt29xdWWa5GXJsdoZGfYPjH3iKRqPBq//9K1ZXV/nYM58g0prNZpOjOK2qWen6E9xKb4cQIW0dPShMaW8fws0/Mo3ss5W3vtNzkbV68jBQItCvsvbbt1f0Muvt/2xgUNaZtpd0t+/bm0WwDbJVUe0xNj6/3wPhtrg2T/YhsetRFFGtVmm1zGfEGo1NfvmLX/KlL36B8+fPE0cxm5tNvEqQqiC9BNOm6+63Ic0WJjbAA7becDT5VLTbHe4t3eGx6aPMTE9zcWGBs2fPMnrERCrWajVaUcyfPv88IsLilSu8Pj9P2Gpx6tSnqW+0qTcbzM49kbo3IoLyVKqSWL+IzYMrjPuF7WI9TGS7X86OlO9lN8/tQInA7wP9BMCu24ciTwB2UtX9tBrZdNyKCxgB0KQqlj3W9mVdf0KvNO1xbv/fioEb/RcEARUF3//eD2g2m0xOTbK6VqcTRWjtpdLMjixYbBMobeYSAPA8hSdmTsUojvGTc2NjLuApj498+CNcPDfPa2fOmM+bVapo3WF1dY1Tp04xWglYX7vLb86e5fpvf8vs8RN89o9PEUUxv7uzxNTMNBNHjtCJIgKcEQxluhvu/bIe9Txrab+w5vnDEJfcZyPnmLz1PAy8CGw3nh/RdXIsgWxF21EAHgGX7YW81Xq5au+J15dAXpcHSFV6Gz4bBIG5kgidTpsz8/MIMev1BqigO3uwKyZu+naWYcuv62dQZnIRy98KVyc2cyYq5SdcAF8hnsf7N25w69YtHpudZfTIOOMTE0xNTFIZMhbL2dfPcuXt84Rhm49+5jM89eSTyZTpTWq1GsceO0ar3UYFab9Fu9NJceyKWTKPQt492w8ehdO7X4O2F0tAHmZGHxQisgzUgZWiuewD0xxs/nDw83DQ+cOjzcMHtNYz2Y0DIQIAIjKvtf6jonk8KA46fzj4eTjo/KGYPAzMEGGJEiWKQSkCJUoccgySCHyzaAL7xEHnDwc/DwedPxSQh4HxCZQoUaIYDJIlUKJEiQJQuAiIyOdF5JKIXBaRV4rms1uIyDUROS8ib4jIfLJtUkR+ISLvJP8niuZpISLfEZHbIvKWs60nXxH5C/4eMwAAAoRJREFUh6RMLonI54phnUaPPHxNRG4k5fCGiJx29g1UHkTkSRF5VUQuiMjbIvK3yfZiyyEb9vn7XDAB6FeAE0AVeBN4ukhOe+B+DZjObPsn4JVk/RXgH4vm6XB7HngOeGsnvsDTSVkEwPGkjNSA5uFrwN/nHDtweQDmgOeS9TFgIeFZaDkUbQl8Cristb6qtW4BPwJeLpjTfvAy8N1k/bvAnxfIJQWt9f8Aq5nNvfi+DPxIax1qrReBy5iyKhQ98tALA5cHrfVNrfVvkvV14ALwBAWXQ9Ei8ATwrvP7vWTbQYAGfi4ir4vIXyXbjmmtb4IpcGC2MHa7Qy++B61c/kZEziXdBWtKD3QeROSDwMeB/6PgcihaBPICqg/KcMVntdbPAS8Cfy0izxdN6CHiIJXLN4APAc8CN4F/SbYPbB5EZBT4MfB3Wuv7/Q7N2fbQ81C0CLwHPOn8/gPg/YK47Ala6/eT/7eBf8eYaUsiMgeQ/L9dHMNdoRffA1MuWuslrXWktY6Bb7FlLg9kHkSkghGAf9Va/1uyudByKFoEzgAnReS4iFSBLwM/LZjTjhCREREZs+vAnwFvYbh/JTnsK8BPimG4a/Ti+1PgyyISiMhx4CTwWgH8doStPAn+AlMOMIB5EPNq37eBC1rrrzu7ii2HAfD4nsZ4Sa8AXy2azy45n8B4bd8E3ra8gSngV8A7yf/Jork6nH+IMZfbmBbmL/vxBb6alMkl4MWi+ffJw/eB88C5pNLMDWoegD/BmPPngDeS5XTR5VBGDJYocchRdHegRIkSBaMUgRIlDjlKEShR4pCjFIESJQ45ShEoUeKQoxSBEiUOOUoRKFHikKMUgRIlDjn+HxASX85y/6dNAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#展示其中一张图片\n",
    "plt.imshow(X[685])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.切分数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#将数据切分为训练集和测试集\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.2,random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集的大小: 2021\n",
      "测试集的大小: 506\n"
     ]
    }
   ],
   "source": [
    "print('训练集的大小:',X_train.shape[0])\n",
    "print('测试集的大小:',X_test.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集的大小: 1515\n",
      "验证集的大小: 506\n"
     ]
    }
   ],
   "source": [
    "#将训练集切分为训练集和验证集\n",
    "X_train,X_val,Y_train,Y_val = train_test_split(X_train,Y_train,test_size = 0.25,random_state = 1)\n",
    "\n",
    "print('训练集的大小:',X_train.shape[0])\n",
    "print('验证集的大小:',X_val.shape[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.数据增强"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_datagen = ImageDataGenerator(rotation_range = 360,\n",
    "                            width_shift_range = 0.3,\n",
    "                            height_shift_range = 0.3,\n",
    "                            horizontal_flip = True,\n",
    "                            vertical_flip = True,\n",
    "                            zoom_range = 0.3,\n",
    "                            shear_range = 30)\n",
    "val_datagen = ImageDataGenerator()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.构建模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入3种预训练的模型\n",
    "from keras.applications.xception import Xception\n",
    "from keras.applications.resnet50 import ResNet50\n",
    "from keras.applications.inception_v3 import InceptionV3\n",
    "\n",
    "from keras.layers import GlobalAveragePooling2D,Dense,ReLU,Dropout,BatchNormalization\n",
    "\n",
    "from keras.models import Model,load_model\n",
    "\n",
    "from tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau\n",
    "\n",
    "from keras.optimizers import SGD,Adam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras import layers\n",
    "\n",
    "#定义模型构建函数\n",
    "def build_model():\n",
    "    base_model = Xception(include_top = False,input_shape = (224,224,3),weights = 'imagenet',pooling = 'avg')\n",
    "    \n",
    "    x = layers.Flatten()(base_model.output)\n",
    "    x = Dense(1024,activation = None)(x)\n",
    "    x = BatchNormalization()(x)\n",
    "    x = ReLU()(x)\n",
    "    x = Dropout(0.5)(x)\n",
    "    outputs = Dense(6,activation = 'softmax')(x)\n",
    "    \n",
    "    model = Model(base_model.input,outputs)\n",
    "    \n",
    "    return(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "#构建训练数据的迭代器\n",
    "train_generator = train_datagen.flow(X_train,Y_train,batch_size = 64)\n",
    "val_generator = val_datagen.flow(X_val,Y_val,batch_size = 64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "#定义模型的训练策略和保存策略\n",
    "checkpoint = ModelCheckpoint('rubbish_classification_xception.h5',monitor = 'val_loss',verbose = 1,\n",
    "                                  save_best_only = True)\n",
    "earlystop = EarlyStopping(monitor = 'val_loss',patience = 6)\n",
    "\n",
    "reduceler = ReduceLROnPlateau(monitor = 'val_loss',patience = 3,verbose = 1,min_lr = 1e-6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "#构建模型\n",
    "\n",
    "model = build_model()\n",
    "model.compile(loss = 'categorical_crossentropy',optimizer = Adam(1e-3),metrics = ['acc'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/25\n",
      " 24/153 [===>..........................] - ETA: 1:05:00 - loss: 0.7020 - acc: 0.7611WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 3825 batches). You may need to use the repeat() function when building your dataset.\n",
      "\n",
      "Epoch 00001: val_loss did not improve from 2.81236\n",
      " 24/153 [===>..........................] - 765s 32s/step - loss: 0.7020 - acc: 0.7611 - val_loss: 10.9207 - val_acc: 0.3360 - lr: 0.0010\n"
     ]
    }
   ],
   "source": [
    "#训练模型\n",
    "\n",
    "history = model.fit_generator(train_generator,steps_per_epoch = 3*51,epochs = 25,validation_data = val_generator,\n",
    "                             callbacks = [reduceler,earlystop,checkpoint])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
